Php 如何在mysql中通过单次查询获取此结果
我有两张桌子Php 如何在mysql中通过单次查询获取此结果,php,mysql,Php,Mysql,我有两张桌子 包含id、姓名、课程号的学生 包含id、名称的课程 我想获取与两个以上学生相关的课程 SELECT course.id AS course_id, course.name AS course_name, COUNT(student.id) AS student_count FROM course INNER JOIN student ON student.course_id = course.id GROUP BY course.id HAVING
- 包含id、姓名、课程号的学生
- 包含id、名称的课程
SELECT
course.id AS course_id,
course.name AS course_name,
COUNT(student.id) AS student_count
FROM course
INNER JOIN student
ON student.course_id = course.id
GROUP BY course.id
HAVING student_count > 2
我试过:
SELECT *
FROM course
LEFT JOIN student
ON student.course_id=course.id
WHERE student.course_id>2
您需要在此处使用
分组依据
和具有
子句。也不需要离开这里加入,因为您只对课程有匹配学生的案例交叉感兴趣
SELECT
course.id AS course_id,
course.name AS course_name,
COUNT(student.id) AS student_count
FROM course
INNER JOIN student
ON student.course_id = course.id
GROUP BY course.id
HAVING student_count > 2
另一个关于你的模式的想法是,如果你想有多对多的关系,你可能应该考虑一个第三表<代码> SuthsSoToSudio<<代码>或类似的,它将学生与课程联系起来。您当前的模式只允许学生记录与单个课程相关联。
迈克几乎要击败我了;我也同意他的结论 SELECT c.id, c.name
FROM course c
JOIN student s
ON s.course_id = c.id
GROUP BY c.id, c.name
HAVING COUNT(s.id) > 2;