我有三张桌子,分别叫学生,student_lessons和student_image。我想选择学生,学生的课程,并显示学生的形象,如果有。在一个查询中是否有处理它的方法?
尝试选择学生id,学生姓名,学生课程(必须存在)和学生形象路径,如果存在学生形象pic_id
# TABLE `students`
id | name | surname
1 : John : Malkovich
2 : John : Smith
# TABLE `students_lessons` ( no AI id here)
student_id | lesson | note
1 : math : A
1 : geo : B
2 : math : C
# TABLE `students_image`
pic_id | student_id | image_path
1 : 1 : some path
2 : 1 : some path
3 : 2 : some path 如果我尝试使用joint进行查询,如果没有找到任何图片,则返回零。如果在单个查询中存在,如何进行查询以选择图像?
发布于 2015-02-28 20:32:58
SELECT students.*
FROM students
JOIN students_lessons ON (students_lessons.student_id = students.id)
LEFT JOIN students_image ON (students_image.student_id = students.id)或者,如果您只关心图像是否存在:
SELECT students.*
FROM students
JOIN students_lessons ON (students_lessons.student_id = students.id)
WHERE EXISTS (
SELECT si.*
FROM students_image si
WHERE si.student_id = students.id
)我想你要找的是LEFT JOIN。只需将SELECT修改为链接即可。此查询选择所有学生,并有课程,他们是否有一个形象。
https://stackoverflow.com/questions/28786470
复制相似问题