行数和一个选择中的值

时间:2014-03-10 14:20:12

标签: mysql

我有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开始。

谢谢,伙计......和女士们:)

3 个答案:

答案 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`"