gpt4 book ai didi

MySQL使用多个连接和分组进行计数

转载 作者:行者123 更新时间:2023-11-29 08:39:25 24 4
gpt4 key购买 nike

我似乎无法找出构建此查询的正确方法,而且我知道有一种方法可以使用纯 SQL 来完成此操作,而且我宁愿通过正确的查询来完成此操作,而不是在我的应用程序逻辑中进行。

我有三个表:

事件类型、预订类型和预订

我想要的是获取给定事件的预订数量,但也包括预订为零的事件类型的行。

SELECT et.name AS test_type, COUNT(et.name) AS num_seats FROM event_types AS et
LEFT OUTER JOIN booking_types AS bt ON et.type_id = bt.event_type_id
LEFT OUTER JOIN bookings AS b ON b.booking_id = bt.booking_id
WHERE b.event_id = 5
GROUP BY test_type

此查询返回类似的内容

test_type | num_seats
----------------------
Transcript | 4
----------------------
Written | 1
----------------------

目前有三种 event_types:“成绩单”、“书面”和“技能”

由于还没有任何“技能”预订(预订可以有多种类型),我希望结果包含类似“技能”| 的行。 0. 此外,如果没有预订,则应该有 3 个零行,在本例中每个 event_type 一个。

感谢您提供的任何帮助!

最佳答案

尝试将 WHERE 过滤器移至 JOIN:

SELECT et.name AS test_type, 
COUNT(b.booking_id) AS num_seats
FROM event_types AS et
LEFT OUTER JOIN booking_types AS bt
ON et.type_id = bt.event_type_id
LEFT OUTER JOIN bookings AS b
ON b.booking_id = bt.booking_id
AND b.event_id = 5
GROUP BY test_type

参见SQL Fiddle with Demo

关于MySQL使用多个连接和分组进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14263098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com