2011-04-14 49 views
0
select 
s.id, s.description, s.improvement, s.previous_year_id, 
s.current_year_id, s.first_name, s.last_name, s.username, 
s.finding, s.action, s.share, s.learned, s.timestamp, 
d.title as department_title, 
group_concat(g.title SEPARATOR \' | \') as strategic_goals, 
y1.year as current_year_title, y2.year as previous_year_title, 
u.summary_id, u.file_name as file_name 
from 
summary s, year y1, year y2, strategic_goal_entries sge, 
goal g, department d, uploads u 
where 
s.id = sge.summary_id 
and 
s.current_year_id = y1.id 
and 
s.previous_year_id = y2.id 
and 
sge.goal_id = g.id 
and 
s.id = u.summary_id 
and 
s.department_id = d.id 
and 
s.department_id = '4' 
group by 
s.id 

从具有在上传表中有关记录包含上传内的值汇总表(s.id = uploads.summary_id)仅返回记录.summary_id字段仅返回记录时s.id = u.summary_id

我想返回所有记录,不管它是否有与之关联的文件。

任何帮助表示赞赏。

+0

左加入上传表.... – 2011-04-14 18:33:21

回答

2

建议重构此SQL查询以使用ANSI连接。为了实现你的目标,你需要一个左连接代替:

SELECT /*your columns*/ 
from summary s 
INNER JOIN year y1 ON s.current_year_id = y1.id 
INNER JOIN year y2 ON s.previous_year_id = y2.id 
INNER JOIN strategic_goal_entries sge ON s.id = sge.summary_id 
INNER JOIN goal g ON sge.goal_id = g.id 
INNER JOIN department d ON s.department_id = d.id 
LEFT JOIN uploads u ON s.id = u.summary_id 

WHERE s.department_id = '4' 
group by s.id 
相关问题