這裏是我的問題使用LEFT JOIN創建一個PHP數組和MySQL IF語句
比方說,我有兩個MySQL表
Orders
CustID, OrderID, OrderDetails1, OrderDetails2, ..
1, 101, Item1, Item2, ...
1, 102, Item1, Item2, ...
1, 103, Item1, Item2, ...
2, 104, Item1, Item2, ...
2, 105, Item1, Item2, ...
.... and so on
Payments
OrderID, Paid
101, Y
105, Y
.... and so on
現在我想的是包含了所有的訂單(每個客戶一個數組)用柱付費Y或N
Array => {
(CustID=1, OrderID=101, Paid=Y),
(CustID=1, OrderID=102, Paid=N),
(CustID=1, OrderID=103, Paid=N) }
我當前SQL是
SELECT o.CustID, o.OrderID, if(p.Paid='Y','Y','N') as Paid
FROM Orders o left JOIN Payments p USING(CustID)
WHERE o.CustID = 123456
AND o.CustID=p.CustID
Group by o.OrderID
Order by o.OrderID;
問題是上面的SQL對Array中的所有行返回Y.如果在給定OrderID的Payments表中沒有記錄,那麼MySQL中的IF語句當然應該檢查並替換爲'N'。
或
我是否必須在PHP中分兩步執行此操作。需要避免這一點,因爲這將是一個高流量的功能。
感謝
刪除'AND o.CustID = p.CustID',使得您的左連接自然連接 – Jens