SQL查询以统计保留的票证数
我有两张桌子: 表1: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
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