这是我第一次使用mysql,我需要一些帮助。我找不到任何解决办法,因为它太容易了,或者我太正常了,无法正常查找。
我想从我的测试数据库中的多个表中进行查询。我们说表是:
类别(* id_category,* id_product)
产品(* id_product,id_category,id_supplier,id_manufacturer)
制造商(* id_manufacturer,名称)
供应商(* id_supplier,名称)
带*的列是整数主键,而不是null,带有auto_increment(从1开始)。其他id列只是整数外键(默认为null)。
我还需要一个查询,也包括产品表上带有null id_manufacturer和/或id_supplier的行。 product表中的那些空字段返回值'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)的行。 我希望您能够以最干净,最有效的方式指出我,而不必更改表格属性。非常感谢任何帮助。
答案 0 :(得分: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;
这些将提供product表的所有行,即使它没有来自其他表的相应行。