查询多个表,包括具有空外键的行 MySQL。

3
这是我第一次接触MySQL,需要一些帮助。可能因为问题太简单或者我还不够熟练,所以找不到任何解决方法。
我想从我的测试数据库中的多个表中进行查询。假设这些表如下:
category (*id_category, *id_product) product (*id_product, id_category, id_supplier, id_manufacturer)
manufacturer (*id_manufacturer, name)
supplier (*id_supplier, name)
其中*标记的列是整数主键,不为空,并且具有自动递增(从1开始)。其他id列只是整数外键(默认为空)。
我需要一个查询,同时包含产品表中id_manufacturer和/或id_supplier为空的行。产品表中这些空字段返回值“0”,因此当我进行以下查询时:
SELECT category.id_product, manufacturer.name, supplier.name 
FROM category, product, manufacturer, supplier 
WHERE category.id_category = product.id_category AND manufacturer.id_manufacturer = product.id_manufacturer AND supplier.id_supplier = product.id_supplier;

没有显示任何空值(0)的行。 我希望你能指出最清洁和高效的方法,而不改变表格属性。非常感谢您的帮助。

1个回答

5
您需要使用左连接(Left Join)。
SELECT category.id_product, manufacturer.name, supplier.name, P.ID_PRODUCT
FROM product
LEFT JOIN category C
ON C.id_category = P.id_category
LEFT JOIN manufacturer M
ON M.id_manufacturer = P.id_manufacturer 
LEFT JOIN supplier S
ON S.id_supplier = P.id_supplier;

这将会返回产品表的所有行,即使它没有与其他表对应的行。

这就是了。非常感谢你。对我来说,一步一步走。:) - Guillem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接