Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
SQL查询以统计保留的票证数_Sql_Sum_Subquery_Inner Join - Fatal编程技术网

SQL查询以统计保留的票证数

SQL查询以统计保留的票证数,sql,sum,subquery,inner-join,Sql,Sum,Subquery,Inner Join,我有两张桌子: 表1: id title 表2: id Table_1_id number_of_tickets 我需要一个查询来计算表2中的票数,并显示:表1的票数id、标题、总票数 我写了这段代码,但它给了我一个错误: 您可以将这两个查询合并,然后对查询进行分组: 选择表1\u id、标题、总数(票证数量) 来自表1 t1 在t1.id=t2.table\u 1\u id上连接表2 t2 按表1\u id、标题分组 您可以使用子查询: select t1.*, (select

我有两张桌子:

表1:

id 
title
表2:

id 
Table_1_id
number_of_tickets
我需要一个查询来计算表2中的票数,并显示:表1的票数id、标题、总票数

我写了这段代码,但它给了我一个错误:


您可以将这两个查询合并,然后对查询进行分组:

选择表1\u id、标题、总数(票证数量)
来自表1 t1
在t1.id=t2.table\u 1\u id上连接表2 t2
按表1\u id、标题分组

您可以使用子查询:

select t1.*,
    (select coalesce(sum(number_of_tickets), 0) from t2 where t2.table_1_id = t1.id) as number_of_tickets
from t1
t2上有一个索引(表1\u id,票证数量)
,这应该是一个有效的选择


至于您的原始代码(作为问题的编辑添加)。意图没有问题,问题在于
GROUP BY
子句与
SELECT
子句不一致。在MySQL中,您可以这样写:

SELECT p.id , p.title, SUM(r.number_of_tickets) AS reserved_tickets 
FROM plays p
INNER JOIN reservations r ON p.id = r.play_id
GROUP BY p.id
ORDER BY reserved_tickets
SELECT
子句中的所有非聚合列都来自表
plays
,我们按
plays.id
分组,它可能是该表的主键


请注意,我修改了查询以使用表别名:这是一种很好的做法,它使查询更易于编写和读取。还要注意,
ORDER BY
子句中允许列别名。

第二部分有几个剧场,因此我需要查询p.title和剧场。我在第二部分的问题中添加了一张图片。第二部分有几个剧场,因此我需要查询p.title和剧场。我在问题的第二部分添加了一幅图片。
select t1.*,
    (select coalesce(sum(number_of_tickets), 0) from t2 where t2.table_1_id = t1.id) as number_of_tickets
from t1
SELECT p.id , p.title, SUM(r.number_of_tickets) AS reserved_tickets 
FROM plays p
INNER JOIN reservations r ON p.id = r.play_id
GROUP BY p.id
ORDER BY reserved_tickets