我有两张桌子:
teachers(teacher_id, name, ... )
teach_subjects(teacher_id, subject_id, ... )
teach_subject
teacher_id
SELECT teacher_id, GROUP_CONCAT(DISTINCT subject_id SEPARATOR ',') AS subjects, [select some more here]
FROM teachers LEFT JOIN teach_subjects USING(teacher_id)
GROUP BY teacher_id;
并非唯一,因为教师可以教授多个科目。
我想要的是选择一个教师名单和他们教授的科目。 我使用的SQL查询是
explode
这会选择主题的ID作为每个教师的字符串。
在PHP中,我使用subject_id
为每位教师获取一系列主题ID。这很好,但我很想知道这是否真的是我必须去的方式?
我只看到另一种方法:将查询分成两个查询(一个用于选择教师数据,一个用于选择主题)
修改:不对数据进行分组,因此只选择不同的{{1}}多次获取行不是一种选择,因为我选择了其他 big 数据,因此我的开销太大了。
注意:这只是我真正使用的查询的简化。我现在只想保持简单。