以下SQL语句适用于某人实际在学校申请某个职位的情况,但没有显示没有申请的职位的详细信息。我如何加入这个?
select school.school_id, school_name,position,
positions_vacant.vacancy_id, DATE_FORMAT(start_date,'%Y-%m-%d')
start_date, positions_vacant.status,count(candidate.candidate_id)
candidate_count
from positions_vacant
join school on (positions_vacant.school_id = school.school_id)
join application on (positions_vacant.vacancy_id =
application.vacancy_id)
join candidate on (application.candidate_id = candidate.candidate_id)
group by school_name,position, DATE_FORMAT(start_date,'%Y-%m-%d'),
positions_vacant.status
order by school_name, start_date;
我附加了一张图片来显示返回的数据集。
帮助将不胜感激,我对这些东西很虚弱。
答案 0 :(得分:1)
尝试使用LEFT JOIN:
SELECT s.school_id,
school_name,
position,
p.vacancy_id,
DATE_FORMAT(start_date,'%Y-%m-%d') start_date,
p.status,
COUNT(c.candidate_id) candidate_count
FROM positions_vacant p
LEFT JOIN school s
ON (p.school_id = s.school_id)
LEFT JOIN application a
ON (p.vacancy_id = a.vacancy_id)
LEFT JOIN candidate c
ON (a.candidate_id = c.candidate_id)
GROUP BY school_name,
position,
DATE_FORMAT(start_date,'%Y-%m-%d'),
p.status
ORDER BY school_name,
start_date;