gpt4 book ai didi

sql - 如何在第三个查询中包含来自其他两个表的过滤行数?

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

我有一个 MySql 数据库,其中包含我需要在查询中组合的三个表:schedule、enrolled 和 waitlist。他们正在实现基本的类(class)注册系统。

Schedule 包含预定的类(class)。当用户注册一个类(class)时,他们的用户帐户 ID 和预定类(class)的 ID 存储在 enrolled 中。如果一个类(class)满员,他们将被存储在候补名单中。所有三个表共享一个 scheduleId 列,用于标识每个类。

当我查询日程表时,我还需要返回代表已注册和等待特定 scheduleId 的用户数量的已注册和等候列表列。

我想出的一个初步查询是:

select s.id, s.classDate, s.instructor, COUNT(e.id) as enrolled
from schedule as s
left outer join enrolled as e
on s.id = e.scheduleId
group by s.id

这对一个或另一个工作正常,但显然我无法通过这种方式获得已注册表和等待列表表的值。任何人都可以建议这样做的好方法吗?

最佳答案

使用嵌套的 SELECT 查询。假设一下您的模式,像这样的东西怎么样(可能不适用于某些类型的 SQL):

select s.id, s.classDate, s.instructor, 
(select COUNT(e.id) from enrolled e where e.scheduleId = s.id) as enrolled,
(select COUNT(w.id) from waitlist w where w.scheduleId = s.id) as waiting
from schedule as s
group by s.id

关于sql - 如何在第三个查询中包含来自其他两个表的过滤行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/467903/

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