加入Questiion - 如何返回没有候选人申请的职位空缺 - 即0结果

时间:2017-01-08 03:56:36

标签: sql sql-server

以下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;

我附加了一张图片来显示返回的数据集。

dataset

帮助将不胜感激,我对这些东西很虚弱。

1 个答案:

答案 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;