gpt4 book ai didi

mysql - 为什么我的数据库看不到这个数据库列?

转载 作者:行者123 更新时间:2023-11-29 00:06:44 26 4
gpt4 key购买 nike

我有一个名为“customers”的表。它包含一个名为“id”的列,出于某些奇怪的原因,我收到了错误:

#1054 - Unknown column 'c.id' in 'on clause'

当我这样做时加入:

SELECT c.co_name, p.name
FROM `customers` as c, `products` as p, `customer_product` as cp
Join `products`
On c.id = cp.customer_id

我也试过删除别名并写出 customers.id,但我仍然遇到错误。

为什么我会收到错误 - 我做错了什么?

非常感谢!

最佳答案

它可能会失败,因为您正在使用别名和完整表。选择一个...此外,您将得到笛卡尔结果,因为您在 cp 和 p 表之间没有任何联系。可能的解决方案。

SELECT 
c.co_name,
p.name
FROM
customers c
JOIN customer_product cp
on c.id = cp.customer_id
Join products p
on cp.product_id = p.id



Clarification per request.

我有一种风格,我喜欢用它来进行基于 SQL 的查询。如果您单击我的答案图片(或与此相关的任何人),它将带您到他们的个人资料/历史记录。然后,如果您单击 MySQL 标签,它将带您到我为 MySQL 提供的所有答案的列表(或者您对我或任何其他用户感兴趣的任何标签)。从那里,看看我的答案的样式模式。

我喜欢使用缩进来直观地表示表“A”与“B”以及从“B”到“C”的关联方式,如下所示。您在没有定义 JOIN 的逗号分隔表之间使用了交叉,然后仅在第三个表上进行了连接。这意味着仅应用了 JOIN 条件。

当我进行查询时,我首先列出了主表,然后 JOIN 到第二个表,并立即确定了 FIRST(左侧)表和 SECOND(右侧)表之间的 ON 条件。由于您有一个链接表(标识客户和产品),因此第一个条件由客户从客户表连接到链接表。所以现在,您需要从链接表获取产品表。所以现在,缩进将产品表进一步向内移动,现在第一个(左侧)表是连接到第二个(右侧)产品表的 LINK (customer_products) 表。现在是它们之间的 ON 条件。

现在,A-B 和 B-C 之间建立了关系。

完成此操作后,您可以获得要返回的任何列,然后应用任何其他条件/分组依据/排序依据条件。请注意,如果我在二级(或更深)级别之一有其他标准,我会准确地在该位置添加标准。这样,在处理左连接条件时,我不会通过将条件放在 WHERE 子句中而意外地将其转换为 INNER 连接。

希望这个和其他一些您可以看到的答案在您以后的查询中有所帮助。

关于mysql - 为什么我的数据库看不到这个数据库列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27180503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com