数据库
首页 > 数据库> > 查询多个表,包括具有空外键MySQL的行

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

作者:互联网

这是我第一次使用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)的行.
我希望您能够以最干净,最有效的方式指出我,而不必更改表格属性.任何帮助将非常感谢.

解决方法:

你需要使用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表的所有行,即使它没有来自其他表的相应行.

标签:multiple-tables,mysql,null,foreign-keys
来源: https://codeday.me/bug/20190901/1780377.html