gpt4 book ai didi

mysql - 从不同的表中选择 COUNT

转载 作者:太空宇宙 更新时间:2023-11-03 11:26:43 26 4
gpt4 key购买 nike

假设我有两个相关表:teacherCourse 这意味着一个 Teacher 可以教授许多类(class),但是一个 Course 一次只能有一个 Teacher,所以,我这样创建这两个表:

create table teacher (
id INT NOT NULL UNIQUE,
name VARCHAR(50) NOT NULL,
lastname VARCHAR(50) NOT NULL
);

create table Course (
id INT NOT NULL UNIQUE,
name VARCHAR(50) NOT NULL,
teacher_id INT NOT NULL
);

所以,例如,我有这样的东西

| id | name     | lastname  | 
-----------------------------
| 1 | teacher1 | lastname1 |
| 2 | teacher2 | lastname2 |

| id | name | teacher_id |
------------------------------
| 1 | course1 | 1 |
| 2 | course2 | 1 |
| 3 | course4 | 2 |

到目前为止一切正常,但根据要求,我需要返回一份教师名单以及教授的类(class)数量,例如:

| id | name     | lastname   | courses  |
----------------------------------------
| 1 | teacher1 | lastname1 | 2 |
| 2 | teacher2 | lastname2 | 1 |

我找不到任何可以适应这个要求的解决方案。我尝试使用 MySql 中的 HAVINGGROUP BY 子句,但这似乎无法满足我的需要。

最佳答案

您可以使用 teacher 表作为左表来使用左连接。它将从教师表中选择所有教师,您可以检索他们的类(class) ID。如果教师没有类(class),它仍会返回教师记录,但类(class) ID 为空。从那里您可以对类(class) ID 进行不同的计数。见下文:

select a.id,
a.name,
a.lastname,
count(distinct b.id) as courses
from teacher a
left join courses b on a.id=b.teacher_id
group by a.id,
a.name,
a.last_name;

这是一张说明不同类型连接的图片 https://www.google.fr/amp/s/amp.reddit.com/r/programming/comments/1xlqeu/sql_joins_explained_xpost_rsql/

关于mysql - 从不同的表中选择 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53824388/

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