table1
--------------
| sn | class |
--------------
table2
----------------
| id | student |
----------------
所有都是int
因为sn
是table1链接到table2中的student
sn
,id
自动增加。向table2插入数据时,学生列与表1中的sn
相同
现在我想在table2中选择student
,但只选择table1中的class
为" 3"
我的语法就是这样;
$count = mysql_query(SELECT student from table2 whose class in table1 =3)
所以我可以通过说
来计算它们$quantity = mysql_num_rows($count)
现在我的问题是,如果sql也有这个关键字,或者我该怎么做呢。
$count = mysql_query(SELECT student from table2 whose class in table1 =3)
答案 0 :(得分:1)
您需要加入表格才能正确过滤结果。
(1)这将为您提供3级学生的数量。
$count = mysql_query(
'SELECT COUNT(t2.student)
FROM table2 t2
INNER JOIN table1 t1
ON t1.sn = t2.student
AND t1.class = 3'
);
(2)这将为您提供所有课程和每个班级的学生人数。
$count = mysql_query(
'SELECT t1.class, COUNT(t2.student)
FROM table2 t2
INNER JOIN table1 t1
ON t1.sn = t2.student
GROUP BY t1.class
ORDER BY t1.class'
);
(3)这将为您提供所有课程和学生名单。
$list = mysql_query(
'SELECT t1.class, GROUP_CONCAT(t2.student SEPARATOR ',')
FROM table2 t2
INNER JOIN table1 t1
ON t1.sn = t2.student
GROUP BY t1.class
ORDER BY t1.class'
);
答案 1 :(得分:0)
您应该加入这两个表并将结果限制为具有table1.class = 3
的表SELECT
student
FROM
table2 a
JOIN table1 b ON (a.student = b.sn)
WHERE b.class = 3
如果你想要计数,你也可以通过SQL使用聚合函数
来完成SELECT
COUNT(student)
FROM
table2 a
JOIN table1 b ON (a.student = b.sn)
WHERE b.class = 3