这里是我的问题使用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