我有2张桌子
我想获取与2名以上学生相关的课程。
我试过了:
SELECT *
FROM course
LEFT JOIN student
ON student.course_id=course.id
WHERE student.course_id>2
答案 0 :(得分:2)
您需要在此处使用GROUP BY
和HAVING
条款。也不需要离开这里,因为你只对课程有匹配学生的情况感兴趣。
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
您的架构的另一个想法是,如果您打算建立多对多关系,您可能应该考虑第三个表students_to_courses
或类似表格,将学生与课程联系起来。您当前的架构只允许学生记录仅与单个课程相关联。
答案 1 :(得分:1)
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;