2012-10-31 127 views
0

这是我的查询..我怎样才能解决这个选择查询

SELECT tcs.tutor_id AS tid, tcs.category_id AS cid, tcs.subject_id AS sid, GROUP_CONCAT(DISTINCT s.subjects SEPARATOR ', ') AS subjects, 
t.tutor_name, t.tutor_code AS tcode, DATE_FORMAT(t.registration_date, '%b %D, %Y') AS date, t.qualification, 
GROUP_CONCAT(DISTINCT o.option_name SEPARATOR ', ') AS tutor_option, timg.image_name AS img 
FROM tutor_category_subject as tcs 
INNER JOIN subject AS s ON tcs.subject_id = s.subject_id 
INNER JOIN tutor_option AS toption ON toption.tutor_id = tcs.tutor_id 
INNER JOIN options AS o ON toption.option_id = o.option_id 
INNER JOIN tutors AS t ON tcs.tutor_id = t.tutor_id 
LEFT JOIN tutor_images AS timg ON timg.tutor_id = tcs.tutor_id 
WHERE s.subjects LIKE '%business%' AND timg.image_type = 'profile' 
GROUP BY tcs.tutor_id; 

此查询工作正常。但有一个与TIMG的IMAGE_TYPE问题明杆。这是辅导员可能有他们的个人资料图像和一些辅导员没有配置文件图像。但是我需要选择所有具有这种条件的导师,即使他们的个人资料图片不是。在这个查询中,如果导师没有选择...的导师没有个人资料图片,那么我该怎么做呢?

任何意见,不胜感激。 谢谢

回答

3

你只需要到WHERE子句中移动过滤器的JOIN子句tutor_images

SELECT tcs.tutor_id AS tid, tcs.category_id AS cid, tcs.subject_id AS sid, GROUP_CONCAT(DISTINCT s.subjects SEPARATOR ', ') AS subjects, 
t.tutor_name, t.tutor_code AS tcode, DATE_FORMAT(t.registration_date, '%b %D, %Y') AS date, t.qualification, 
GROUP_CONCAT(DISTINCT o.option_name SEPARATOR ', ') AS tutor_option, timg.image_name AS img 
FROM tutor_category_subject as tcs 
INNER JOIN subject AS s ON tcs.subject_id = s.subject_id 
INNER JOIN tutor_option AS toption ON toption.tutor_id = tcs.tutor_id 
INNER JOIN options AS o ON toption.option_id = o.option_id 
INNER JOIN tutors AS t ON tcs.tutor_id = t.tutor_id 
LEFT JOIN tutor_images AS timg ON timg.tutor_id = tcs.tutor_id AND timg.image_type = 'profile' 
WHERE s.subjects LIKE '%business%' 
GROUP BY tcs.tutor_id; 
1

你也能做到这一点的WHERE部分:

WHERE s.subjects LIKE '%business%' AND (timg.image_type = 'profile' OR timg.image_type is NULL) 
相关问题