0

LEFT JOINが、達成する必要のあることを十分に行っていないという状況があります。製品テーブル(ItemID、ProductName、Price列のProducts)と注文テーブル(OrderNumber、ItemID、Quantity列のOrders)があります。

現在特定の注文の一部ではない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";  
4

3 に答える 3

1

次のように、この目的でアンチジョインを使用できます。

SELECT ItemID, ProductName
FROM Products
WHERE ItemID NOT IN (
    SELECT ItemID
    FROM Orders
    WHERE OrderID = X
)
ORDER BY ProductName
于 2013-02-26T16:30:26.210 に答える
0
SELECT Products.ItemID, Products.ProductName
FROM Products
WHERE Products.ItemID not in (select Orders.ItemID from Orders where Orders.OrderNumber = xxx)
ORDER BY Products.ProductName
于 2013-02-26T16:29:31.343 に答える
0

必要なことは、結合条件に注文番号を追加するだけで簡単に実行できます。

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
于 2013-02-26T16:33:33.480 に答える