MySQL SELECT JOIN ON 3表“继续”查询,如果1个连接没有返回任何内容

时间:2013-10-15 12:20:48

标签: mysql

我要做的是以下内容:

SELECT 

    t1.id t1_id, t1.title t1_title, t1.subtitle t1_subtitle, t1.content t1_content, 
    t2.title t2_title, t2.newfilename t2_newfilename, 
    t3.picture t3_picture 

FROM webcms_cms_content t1 

INNER JOIN webcms_cms_downloads t2 
    ON t1.id = t2.content_id 

INNER JOIN webcms_mod_galleries_pictures t3 
    ON t1.gallery_id = t3.gallery_id 

WHERE t1.structure_id =3 
AND t1.status=1 
AND t1.flag=1 
ORDER BY t1.newsdatum DESC, t3.rang ASC

现在的问题是,有时其中一个连接不会返回任何东西,但另一个连接会返回。因此,如果一个连接没有返回任何内容,我也希望始终获取数据。

更详细:

    INNER JOIN webcms_cms_downloads t2 
    ON t1.id = t2.content_id 

可能没有下载,但下一次加入

    INNER JOIN webcms_mod_galleries_pictures t3 
    ON t1.gallery_id = t3.gallery_id 

会返回一些东西,所以我想得到那个部分。现在它“刹车”并且如果第一个连接为空则不返回任何内容。

这只能在一个查询中实现吗?我该怎么办?

感谢所有建议和帮助!

2 个答案:

答案 0 :(得分:1)

准确地使用LEFT JOIN而不是INNER JOIN

答案 1 :(得分:1)

正如其他答案一样,这应该会给你一些联接使用的提示。

Sql Joins