我正在尝试弄清楚如何允许AND
语句中存在LEFT OUTER JOIN
,因为在查看记录时该表是可选的。但是,我有一个没有文件的问题,并在WHERE
语句中,如下所示:
SELECT rec.record_id,
rec.record_name,
f.file_name,
f.file_id
FROM
(
records rec
LEFT OUTER JOIN files f ON f.record_id = rec.record_id
)
WHERE rec.record_id = 4928
AND f.file_approved = 1 <-- this is what returns a zero results
当我删除AND f.file_approved = 1
时,它会返回一条记录,但是当我离开它时,它不返回任何记录。
如果记录不包含文件记录,则不会返回任何内容。我需要它来检查它,如果没有文件,它应该仍然能够返回记录(没有文件)。
答案 0 :(得分:5)
尝试将条件移动到join语句中,这样只有符合条件才会在行上加入
SELECT rec.record_id,
rec.record_name,
f.file_name,
f.file_id
FROM
(
records rec
LEFT OUTER JOIN files f ON f.record_id = rec.record_id AND f.file_approved = 1
)
WHERE rec.record_id = 4928;
答案 1 :(得分:0)
如果您不想强制使用该条件,请使用OR代替
WHERE
rec.record_id = 4928
OR
f.file_approved = 1