Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL在单个查询中连接和计数_Mysql_Sql_Join_Left Join - Fatal编程技术网

MySQL在单个查询中连接和计数

MySQL在单个查询中连接和计数,mysql,sql,join,left-join,Mysql,Sql,Join,Left Join,我正在尝试将两个表连接在一起,并获得外键的计数。。。 对不起,我真的不知道如何解释自己,所以让我来演示: 我有一个表格“订单”,用于订单,带有以下字段: id, f_name, l_name, credit_card, ETC. 然后,我为订单中的项目创建了一个“orders\u details”表,如下所示: id, order_id, product_id, qty 现在,我想运行一个连接这两个表的查询,在orders表中每行得到一行,一列告诉我每个订单中有多少产品 SELECT o.i

我正在尝试将两个表连接在一起,并获得外键的计数。。。 对不起,我真的不知道如何解释自己,所以让我来演示:

我有一个表格“订单”,用于订单,带有以下字段:

id, f_name, l_name, credit_card, ETC.
然后,我为订单中的项目创建了一个“orders\u details”表,如下所示:

id, order_id, product_id, qty
现在,我想运行一个连接这两个表的查询,在orders表中每行得到一行,一列告诉我每个订单中有多少产品

SELECT o.id, o.f_name, o.l_name, COUNT(od.id), COALESCE(SUM(od.qty), 0)
FROM orders o
LEFT JOIN order_details od ON o.id = od.order_id
GROUP BY o.id, o.f_name, o.l_name
有人知道如何做到这一点吗


另外,我还希望能够获得订单的所有“数量”的总和(我不想对每个订单运行单独的查询)。

@John请记住,如果您在
SELECT
子句中添加更多列,您还需要将它们添加到groupby@John:实际上,在MySQL中,您不必在groupby中包含所有未聚合的列/表达式。MySQL允许您使用一个缩写组,在这里您只需要包含键列或表达式,这些键列或表达式唯一地定义您选择的所有其他非聚合数据。尽管如此,我仍然认为Phil的建议值得遵循,因为大多数其他RDBMS都不支持缩写分组,谁知道您是否会决定开始学习和使用另一种SQL方言。