我有2个表的表结构
首先是有ID的教师,第二是有ID的学生;每个学生只有一名教师,因此在学生表中有教师ID的列。
Currenctly我正在使用这个选择:
SELECT t.`id`, t.`name`, count(ti.`identificator`) as student_count FROM `teachers` t
LEFT JOIN `students` ti ON t.`id` = ti.`teacher_id`
GROUP BY t.`id`"
我得到的结果如下:
1 | Jack | 22
2 | Daniel | 29
是否可以在一个选择中显示所有指定的学生?像这样:
1 | Jack | 22 | Student1
1 | Jack | 22 | Student2
.
.
.
2 | Daniel | 29 | Student25
我希望我的问题很明确,我知道我可以选择两个选择,或者一个用php计算,但我正试图从MySQL开始。
谢谢,伙计......和女士们:)
答案 0 :(得分:2)
为了获得你想要的东西,你需要一个subselect来计算:
SELECT
t.`id`,
t.`name`,
student_count.`count`,
s.`name`
FROM `teachers` t
LEFT JOIN `students` s ON t.`id` = s.`teacher_id`
LEFT JOIN (
SELECT
ti.`teacher_id`,
count(*) as count
FROM `students` ti
GROUP BY ti.`teacher_id`) student_count ON t.`id` = student_count.`teacher_id`
答案 1 :(得分:1)
假设学生专栏名称为Studentname
也许这可以起作用
SELECT
t.`id`,
t.`name`,
count(ti.`identificator`) as student_count,
ti.StudentName
FROM `teachers` t
LEFT JOIN `students` ti ON t.`id` = ti.`teacher_id`
GROUP BY t.`id`,t.`name`,ti.StudentName
答案 2 :(得分:1)
在查询中添加学生姓名;假设name
是学生表中的一列
SELECT t.`id`, t.`name`, count(ti.`identificator`) as student_count,
ti.name
FROM `teachers` t
LEFT JOIN `students` ti ON t.`id` = ti.`teacher_id`
GROUP BY t.`id`"