這是一個隨機問題,我一直在使用MySQL中的多個查詢和一小部分PHP進行此操作。使用MySQL使用LEFT JOIN返回結果,其中一個表不包含記錄
我有一個MySQL查詢:
SELECT *
FROM (reviews LEFT JOIN orders ON reviews.orderid = orders.orderid)
LEFT JOIN customers ON orders.custid = customers.id
WHERE customers.email = '$email'
返回從特定客戶的所有產品評價。
我想知道構造一個單獨的查詢,它將返回尚未審查的所有客戶訂單。也就是說,在評論表中沒有特定orderid的記錄。
所以......
SELECT *
FROM orders LEFT JOIN customers ON orders.custid = customers.id
WHERE customers.email = '$email'
...這將返回所有客戶的訂單,但後來我想也許是使用其他WHERE子句和LEFT JOIN,因此現在只有訂單ID的,沒有相應的審查記錄回。我一直在試圖找到一些能夠做到這一點的東西,現在沒有任何運氣。似乎沒有任何工作。如上所述,我已經設法使用PHP/MySQL的組合,但它不是非常高效,所以我想知道是否有人有任何建議?
在此先感謝。
瑞安
在你的'WHERE'子句中添加'WHERE ... AND orders.orderid NOT IN(SELECT orderid FROM reviews)'。或'WHERE ... AND NOT EXISTS(SELECT * FROM reviews r WHERE r.orderid = orders.orderid)' – 2012-02-10 01:13:48
@ypercube您的評論擊敗了我的回答,很高興我們在同一頁面上雖然 – shaunhusain 2012-02-10 01:18:11
@ypercube:雅男人,發表那些答案! – 2012-02-10 01:20:30