3

这是我第一次使用 mysql,我需要一些帮助。我找不到任何解决方案可能是因为它太容易了,或者我太菜鸟无法正确查找它。

我想从我的测试数据库中的多个表中进行查询。假设表格是:

类别(*id_category,*id_product)

产品(*id_product、id_category、id_supplier、id_manufacturer)

制造商(*id_manufacturer,名称)

供应商(*id_supplier,名称)

带有 * 的列是整数主键,而不是具有 auto_increment 的 null(从 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) 的行。我希望您以最干净和最有效的方式指出我,而无需更改表属性。任何帮助将不胜感激。

4

1 回答 1

5

然后你需要使用左连接。

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;

这些将给出产品表的所有行,即使它没有来自其他表的对应行。

于 2013-04-03T17:02:35.867 回答