这是我当前的查询,它工作正常,正如我所期望的那样。
SELECT a.ID, a.CreatedDate, a.Status, b.OrderTotal,
e.Rate, f.RouteType, f.Code, g.Country, h.Network
from orders AS a
LEFT JOIN order_details AS b ON a.ID = b.OrderID
LEFT JOIN order_routes AS d ON a.ID = d.OrderID
LEFT JOIN userrate AS e ON e.ID = d.RouteID
LEFT JOIN ratelist AS f ON f.ID = e.RateListID
LEFT JOIN country AS g ON f.CountryID = g.ID
LEFT JOIN network AS h ON f.NetworkID = h.ID
WHERE a.UserID = 16 ORDER BY a.CreatedDate DESC
但是现在我尝试添加另一列,该列显示 order_routes 中每个 OrderID 的出现次数
我的订单路线现在看起来像这样
ID OrderID RouterID
1 1 1
2 1 2
3 2 2
4 2 3
5 2 5
所以我想要列显示 OrderID 在 order_routes 表中出现的次数。
我认为我的查询中需要子查询,但是当我尝试这样做时,它给了我错误。让您知道
a.ID = d.订单ID
e.ID = d.RouteID
请帮忙。
最佳答案
试试这个
SELECT a.ID, a.CreatedDate, a.Status, b.OrderTotal,
e.Rate, f.RouteType, f.Code, g.Country, h.Network, d2.cnt AS OrderCount
FROM orders AS a
LEFT JOIN order_details AS b ON a.ID = b.OrderID
LEFT JOIN order_routes AS d ON a.ID = d.OrderID
LEFT JOIN (SELECT OrderID as OrderID2, COUNT(*) AS cnt FROM order_routes GROUP BY 1) AS d2 ON a.ID = d2.OrderID2
LEFT JOIN userrate AS e ON e.ID = d.RouteID
LEFT JOIN ratelist AS f ON f.ID = e.RateListID
LEFT JOIN country AS g ON f.CountryID = g.ID
LEFT JOIN network AS h ON f.NetworkID = h.ID
WHERE a.UserID = 16 ORDER BY a.CreatedDate DESC
关于php - Mysql 查询使用 LEFT JOIN 并具有来自另一个表的 OrderID 计数...卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32567318/