Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 SQL列出尚未订购的产品_Mysql_Left Join_Isnull - Fatal编程技术网

Mysql SQL列出尚未订购的产品

Mysql SQL列出尚未订购的产品,mysql,left-join,isnull,Mysql,Left Join,Isnull,我遇到的情况是,左连接在我需要完成的事情上做得不够远。我有一个产品表(列为ItemID、ProductName、Price的产品)和一个订单表(列为OrderNumber、ItemID、Quantity的订单) 我需要查询返回products表中当前不属于特定订单一部分的所有产品(例如,列出不属于OrderNumber 52一部分的所有产品) 我当前的查询列出了所有产品,但不包括作为任何OrderNumber一部分的产品 $query = "SELECT Products.ItemID, Pro

我遇到的情况是,左连接在我需要完成的事情上做得不够远。我有一个产品表(列为ItemID、ProductName、Price的产品)和一个订单表(列为OrderNumber、ItemID、Quantity的订单)

我需要查询返回products表中当前不属于特定订单一部分的所有产品(例如,列出不属于OrderNumber 52一部分的所有产品)

我当前的查询列出了所有产品,但不包括作为任何OrderNumber一部分的产品

$query = "SELECT Products.ItemID, Products.ProductName
FROM Products
LEFT JOIN Orders
ON Orders.ItemID = Products.ItemID
WHERE Orders.ItemID IS NULL
ORDER BY Products.ProductName";  

为此,可以使用反联接,如下所示:

SELECT ItemID, ProductName
FROM Products
WHERE ItemID NOT IN (
    SELECT ItemID
    FROM Orders
    WHERE OrderID = X
)
ORDER BY ProductName

只需在连接条件中添加订单号,即可轻松完成所需操作:

SELECT Products.ItemID, Products.ProductName
FROM Products
LEFT JOIN Orders
ON (Orders.ItemID = Products.ItemID AND OrderNumber = 52)
WHERE Orders.ItemID IS NULL
ORDER BY Products.ProductName

反连接代码简单有效。谢谢你的提示。
SELECT Products.ItemID, Products.ProductName
FROM Products
LEFT JOIN Orders
ON (Orders.ItemID = Products.ItemID AND OrderNumber = 52)
WHERE Orders.ItemID IS NULL
ORDER BY Products.ProductName