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