php - Mysql 查询使用 LEFT JOIN 并具有来自另一个表的 OrderID 计数...卡住

标签 php mysql database select count

这是我当前的查询,它工作正常,正如我所期望的那样。

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/

相关文章:

php - galera 集群的节点数必须是奇数吗?

PHP多行表单,自动化MySQL输入

mysql - 如何从 MySQL 的时间戳中查找上个月的记录?

php - 由于 undefined variable ,从数据库检索数据时出现问题

mysql - 复杂的 MySQL 搜索查询

sql - 挣扎于电话号码的 MySQL 数据库

mysql - 获取具有特定值的记录数量,但每个唯一字段仅获取一次

php - PHP 和 GD 为文本背景绘制颜色

javascript - 如何在 JavaScript/HTML 中检索 $_SESSION 值

MySQL电影预订系统设计第2部分