我有以下SQL查询,它从3个表'work','media'和'work_media'中选择一个结果
我希望所有工作都与其中一个相关的媒体一起工作,以下SQL查询就是这样做的。 但它只返回实际上有媒体链接的工作,而这不是我想要的,我也希望返回的工作没有附加媒体。 我怎么能完成这个?
选择work
。id
,work
。title
,work
。file_name_thumb
来自work
,media
,media_work
WHERE media_work
。work_id
= work.id
和media_work
。media_id
= media.id
GROUP BY work
。id
ORDER BY work
。id
DESC
答案 0 :(得分:0)
您需要使用OUTER JOIN。
答案 1 :(得分:0)
SELECT w.id, w.title, w.file_name_thumb
FROM work w
LEFT OUTER JOIN media_work mw ON mw.work_id = w.id
LEFT OUTER JOIN media m ON mw.media_id = m.id
GROUP BY w.id
ORDER BY w.id DESC
答案 2 :(得分:0)
你应该尝试这样的事情:
SELECT w.id, w.title, w.file_name_thumb
FROM work w
LEFT JOIN media_work mw ON mw.work_id = w.id
LEFT JOIN media m ON m.id = mw.media_id
GROUP BY w.id
ORDER BY w.id DESC;
你真的不知道自己想要什么,如果你想看到所有的工作,即使那些没有媒体的人也能正常工作,否则第一个LEFT JOIN
应该是{{ 1}}。
答案 3 :(得分:0)
你应该使用OUTER JOIN:
SELECT work.id, work.title, work.file_name_thumb FROM work
LEFT OUTER JOIN media_work ON media_work.work_id = work.id
LEFT OUTER JOIN media ON media_work.media_id = media.id
GROUP BY work.id ORDER BY work.id DESC;
LEFT OUTER JOIN将包括左侧表格中的所有行,即使右表中没有对应的行也是如此。但要小心,丢失的行将填充NULL。