Mysql 使用 LEFT JOIN 查询并计算来自另一个 table 的 OrderID...卡住了
Mysql Query with LEFT JOIN and having count of OrderID from another table... Stuck
这是我当前的查询,如我所料,它运行良好。
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 table.
中出现次数的列
我想我的查询中需要子查询,但是当我尝试这样做时它给了我错误。让你知道
a.ID = d.OrderID
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
这是我当前的查询,如我所料,它运行良好。
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 table.
中出现次数的列我想我的查询中需要子查询,但是当我尝试这样做时它给了我错误。让你知道
a.ID = d.OrderID
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