我有三张桌子:
create table student(student_id varchar(45), student_name varchar(45));
create table internship(internship_id varchar(45), internship_name varchar(45));student_intership是这两张表的“桥梁”。
student_intership(student_id, internship_id)所以,这是一个多到多的情况。
情况:
我想知道实习的名字和学生的人数,但是如果没有那个实习的学生,那么应该有下面的例子:
intership_name | count(student_id)
--------------------------------
1. intern1 | 20
2. intern2 | 3
3. intern3 | 0我试过的密码是:
select internship.internship_id, count(student.student_id)
from student_internship, internship, student
where student_internship.student_id = student.student_id
and student_internship.internship_id = internship.internship_id
group by student_internship.internship_id;发布于 2016-05-23 16:55:20
试试这个:
SELECT i.internship_name, COALESCE(COUNT(si.student_id), 0) AS cnt
FROM internship i
LEFT JOIN student_intership si ON i.internship_id = si.internship_id
GROUP BY si.internship_id, i.internship_name上面的查询将返回表internship的所有记录。它将返回与0记录无关的internship记录的student。
发布于 2016-05-23 16:56:29
快速刺伤:
SELECT st.student_id
,st.student_name
,si.InternshipCount
FROM student st
LEFT JOIN (
SELECT count(*) AS InternshipCount
,student_id
FROM student_internship s
INNER JOIN internship i
ON s.student_id = i.student_id
group by student_id
) AS si
ON st.student_id = si.student_idhttps://stackoverflow.com/questions/37396476
复制相似问题