我有3个MySQL表。
使用 company_id 和 company_name公司 product_id 和 company_id
产品 带有 product_id , product_name 的
名称以及有关该产品的其他信息
我正在尝试在给定product_name
的一个查询中输出company_name
和product_id
。
基本上我需要来自名称和公司表的信息,它们之间的链接是产品表。
如何进行需要从第三张桌子“反弹”的联接?
这样的东西,但这显然不起作用:
SELECT product_name, company_name
FROM names
LEFT OUTER JOIN companies ON
(names.product_id = products.product_id and products.company_id = companies.company_id)
WHERE product_id = '12345'
答案 0 :(得分:3)
select n.product_name, c.company_name
from names n
left outer join products p on n.product_id = p.product_id
left outer join companies c on p.company_id = c.company_id
where n.product_id = '12345'
答案 1 :(得分:1)
你几乎拥有它,你只需要在查询中包含第三个表作为另一个连接:
SELECT product_name, company_name
FROM names
LEFT JOIN products ON names.product_id = products.product_id
LEFT JOIN companies ON products.company_id = companies.company_id
WHERE product_id = '12345'
另外,您应该注意,如果您使用LEFT JOIN,那么如果制作该产品的公司未知,则公司名称可能为NULL。因此,您需要在代码中测试它以避免异常。如果您知道它永远不应该为NULL,或者您想要明确地排除您不了解公司的产品,那么在这两种情况下都使用INNER JOIN而不是LEFT JOIN。