Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySQL查询左外部联接不显示null_Mysql_Left Join - Fatal编程技术网

mySQL查询左外部联接不显示null

mySQL查询左外部联接不显示null,mysql,left-join,Mysql,Left Join,我正试图输出库存表中的所有行以及零件表中的描述。以下是表格: 库存表 零件表 我想要的是让所有人从库存行中输出所有SKU,这些库存行有一个特定的订单号,旁边有SKU的描述。如果库存SKU与零件SKU不匹配,我希望输出为NULL的描述 以下是我现有的查询: SELECT * FROM inventory LEFT OUTER JOIN parts ON inventory.sku = parts.sku AND parts.description IS NULL WHERE orderID = $

我正试图输出库存表中的所有行以及零件表中的描述。以下是表格:

库存表

零件表

我想要的是让所有人从库存行中输出所有SKU,这些库存行有一个特定的订单号,旁边有SKU的描述。如果库存SKU与零件SKU不匹配,我希望输出为NULL的描述

以下是我现有的查询:

SELECT * FROM inventory LEFT OUTER JOIN parts ON inventory.sku = parts.sku AND parts.description IS NULL WHERE orderID = $orderID
请提供帮助。

您应该将parts.description为NULL条件移动到where子句,因为在连接右表上的行时,其字段上没有NULL

SELECT  *
FROM    inventory
LEFT OUTER JOIN
        parts
ON      inventory.sku = parts.sku
WHERE   orderID = $orderID AND
        parts.description IS NULL 
编辑

更好地阅读您的需求,似乎您想要左表中的所有行,而不管它们是否在右表中匹配。如果是这样的话,你可以完全摆脱这种状况

SELECT  *
FROM    inventory
LEFT OUTER JOIN
        parts
ON      inventory.sku = parts.sku
WHERE   orderID = $orderID

那是我第一次尝试。在这一行中,我得到的只是带有SKU 11111的行,因为这是唯一有SKU描述的条目。几乎像一个内部连接。第二个似乎应该工作。。。如果未设置SQL FIDLE,则显示问题的示例数据。根据提供的信息,Id表示您有两个问题之一:1一个或两个表中的SKU具有非显示字符,导致没有匹配的记录。2传入的$orderID与任何记录都不匹配。如果没有记录,我将不使用where子句运行查询。如果没有返回记录,则SKU中有非显示字符需要处理。也许可以修剪记录以删除空格?如果您获得记录,那么您传递的$OrderID无效。Likley第二,因为左联接至少应返回库存。