我有以下的一些示例數據的MySQL表。選擇所有記錄但排除關聯記錄
1)表:ai_shipment
+----+---------------------+---------------------+------------------+
| id | booking_date | loading_date | container_number |
+----+---------------------+---------------------+------------------+
| 1 | 2012-08-03 00:00:00 | 2012-08-04 00:00:00 | ABB987987BBC6 |
| 2 | 2012-08-05 00:00:00 | 2012-08-07 00:00:00 | BHJKKU78786GH |
+----+---------------------+---------------------+------------------+
2)表:ai_purchase_item
+----+---------+----------+-----------+-----------+
| id | item_id | quantity | cost | rate |
+----+---------+----------+-----------+-----------+
| 1 | 1 | 50 | 1200.0000 | 1355.0000 |
| 2 | 2 | 20 | 550.0000 | 675.0000 |
| 3 | 4 | 70 | 70.0000 | 70.0000 |
| 4 | 6 | 90 | 90.0000 | 90.0000 |
| 5 | 7 | 80 | 80.0000 | 80.0000 |
+----+---------+----------+-----------+-----------+
3)表:shipment_purchase_item
+----+-------------+------------------+
| id | shipment_id | purchase_item_id |
+----+-------------+------------------+
| 1 | 1 | 2 |
| 2 | 2 | 3 |
+----+-------------+------------------+
基本上我在ai_purchase_item
,ai_shipment
存儲所有購買的物品的詳細信息,ai_shipment_purchase_item
存儲物品的出貨記錄。
我想要做的是,我想選擇ai_purchase_item
未發貨的所有記錄。這意味着外鍵不應該存在於ai_shipment_purchase_item
中。
參考上面的記錄,我期待被取的結果是。
+----+---------+----------+-----------+-----------+
| id | item_id | quantity | cost | rate |
+----+---------+----------+-----------+-----------+
| 1 | 1 | 50 | 1200.0000 | 1355.0000 |
| 4 | 6 | 90 | 90.0000 | 90.0000 |
| 5 | 7 | 80 | 80.0000 | 80.0000 |
+----+---------+----------+-----------+-----------+
我想是這樣的(我知道SQL查詢是不恰當)
SELECT
pi.id,
pi.item_id,
pi.quantity,
pi.cost,
pi.rate
FROM
ai_purchase_item pi
JOIN
ai_shipment_purchase_item spi ON spi.purchase_item_id = pi.id
WHERE NOT EXISTS (SELECT spi.purchase_item_id WHERE spi.purchase_item_id = pi.id)
謝謝。
+1的所有解釋。 – diEcho 2012-07-30 10:43:39
+1,爲偉大的答案,讓我試試:) – 2012-07-30 10:44:22
謝謝你的鏈接。 – 2012-07-30 10:53:44