Php SQL使用条件连接其他表
我有一个疑问:Php SQL使用条件连接其他表,php,mysql,sql,Php,Mysql,Sql,我有一个疑问: SELECT * FROM `classes` JOIN `classes_students` ON `classes`.`id` = `classes_students`.`class` $user_id = 1; // current user_id $query = "SELECT `classes`.`id`, `classes`.`name`, COUNT(*) as students FROM `classes` JOIN `class
SELECT *
FROM `classes`
JOIN `classes_students`
ON `classes`.`id` = `classes_students`.`class`
$user_id = 1; // current user_id
$query = "SELECT `classes`.`id`, `classes`.`name`, COUNT(*) as students FROM `classes`
JOIN `classes_students`
ON `classes`.`id` = `classes_students`.`class_id`
AND `classes_students`.`user_id` != $user_id
GROUP BY `classes_students`.`class_id`
";
我需要添加条件来选择当前未登录学生的班级(用户ID不在与班级ID相连的班级中),并计算该班级中有多少学生
表结构:
类别:id、名称等
班级学生:班级id、用户id等
表数据:
classes:
1 | test
2 | test2
3 | test3
classes_students:
1 | 1
1 | 2
2 | 3
3 | 4
3 | 5
id为1的im用户的预期输出:
班级名称(学生人数):
所有这些都集中在一个查询中。有可能吗?如果是,如何进行
Select classid, count(*)
from class
left join student on student.classid = class.classid
group by classid
很高兴为您提供帮助尝试以下查询:
SELECT *
FROM `classes`
JOIN `classes_students`
ON `classes`.`id` = `classes_students`.`class`
$user_id = 1; // current user_id
$query = "SELECT `classes`.`id`, `classes`.`name`, COUNT(*) as students FROM `classes`
JOIN `classes_students`
ON `classes`.`id` = `classes_students`.`class_id`
AND `classes_students`.`user_id` != $user_id
GROUP BY `classes_students`.`class_id`
";
我想出来了!:)
谢谢你们的帮助
$user_id = 1; // current user_id
$query = "SELECT `classes`.`id`, `classes`.`name`, COUNT(*) as students FROM `classes`
LEFT JOIN `classes_students`
ON `classes`.`id` = `classes_students`.`class_id`
WHERE `classes`.`id` NOT IN (SELECT `class_id` FROM `classes_students` WHERE `user_id`='.$user_id.')
GROUP BY `classes_students`.`class_id`
";
可能使用一些数据设置SQLFIDLE,我们可以帮助您解决这个问题。如果我们不知道表结构,也没有看到您想要的输出示例,我们只会猜测。为什么是一个查询?向我们展示一些示例表数据以及您希望从该查询中获得的结果。添加了示例数据,谢谢。这向我展示了我所在的类。但是我想显示其他类(我不在其中)。你应该将where class.classid not in(1,2,3,…)添加到group byYes之前,它的工作方式是,但当我的类是其他学生时,该类也会显示。这不是我所期望的。@JeleanThomas,并不真正理解这一点,“但当我的班是其他学生时,那个班也会出现”。我以为您想提取与当前登录用户无关的类。上面的查询应该得到所有与当前useryes没有关系的类。但是,当所选班级的学生在班级中有另一个记录,而不是实际登录的用户时,它会显示出来。你可以自己试试。:)