Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mysql中通过单次查询获取此结果_Php_Mysql - Fatal编程技术网

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;