【问题标题】:Joining two tables together with count将两个表与计数连接在一起
【发布时间】:2014-02-13 15:27:44
【问题描述】:

我有两个表名为:ordersuser_details

user_details 表包含 4 列:id、name、address、phone..

orders 表包含 3 列:order_id、id、order_date

id 在两个表中是通用的。

现在我想以这样一种方式加入这两个表,即得到一个表,其中包含一列(作为名称)和另一列(作为订单总数)。

我尝试使用计数:

SELECT name, COUNT(order_id) FROM orders
LEFT JOIN user_details
ON orders.id = user_details.id;

但我知道这是错误的...正确的方法是什么?

【问题讨论】:

  • user_details和orders是什么关系?

标签: mysql left-join


【解决方案1】:

您应该使用 group 函数才能使用聚合函数

SELECT u.name, COUNT(o.order_id)
FROM orders o
LEFT JOIN user_details u
ON o.id = u.id /* make sure you have a correct relation b/w user and order table o.id should point to user id*/
GROUP BY  u.id

GROUP BY (Aggregate) Functions

【讨论】:

    【解决方案2】:

    你需要使用GROUP BY

    SELECT name, COUNT(order_id) FROM orders
    LEFT JOIN user_details
    ON orders.id = user_details.id
    GROUP BY user_details.id;
    

    【讨论】:

      【解决方案3】:
      SELECT ud.name, count(o.order_id) FROM orders o
      JOIN user_details ud
          ON o.id = ud.id
      GROUP BY ud.id
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-06
        • 1970-01-01
        • 2021-10-22
        相关资源
        最近更新 更多