SQL选择问题

时间:2010-08-20 16:48:53

标签: mysql

我有以下SQL查询,它从3个表'work','media'和'work_media'中选择一个结果

我希望所有工作都与其中一个相关的媒体一起工作,以下SQL查询就是这样做的。 但它只返回实际上有媒体链接的工作,而这不是我想要的,我也希望返回的工作没有附加媒体。 我怎么能完成这个?

选择workidworktitleworkfile_name_thumb 来自workmediamedia_work WHERE media_workwork_id = work.id 和media_workmedia_id = media.id GROUP BY workid ORDER BY workid DESC

4 个答案:

答案 0 :(得分:0)

您需要使用OUTER JOIN。

答案 1 :(得分:0)

使用LEFT OUTER JOIN

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。