0

我有文章,存储在article表格中。有些文章有一张或多张照片,存储在一个指定的photoarticle_id中。某些照片已“停用”( photo.active = '0'),不应检索。

我正在尝试为主页获取文章,并为每篇带有一张或多张照片的文章获取一张照片。像这样:

SELECT article.id, article.date, article.title, photo.filename_small 
FROM (article) 
LEFT JOIN photo ON photo.article_id=article.id 
WHERE photo.active = '1' 
GROUP BY article.id 
ORDER BY article.date desc 
LIMIT 10

(“分组依据”是为了让我不会为包含多张照片的文章获得多个结果。这让我觉得很尴尬。)

当我有WHERE photo.active = '1'这样的情况时,我只能得到一张照片的结果,这违背了让连接成为左连接的目的。仅当连接将文章与照片匹配时,位置才相关,但它会排除所有没有活动照片的文章。有任何想法吗?

(是的,有类似的问题,但我已经阅读了很多,但仍在苦苦挣扎。)

4

2 回答 2

3

尝试类似的东西

SELECT  article.id, 
        article.date, 
        article.title, 
        photo.filename_small  
FROM    (article)  LEFT JOIN 
        photo   ON  photo.article_id=article.id  
                AND photo.active = '1'  
GROUP BY article.id  
ORDER BY article.date desc  
LIMIT 10
于 2012-09-14T03:43:19.847 回答
1

两种选择。

  1. 把它放在join子句中:

    LEFT OUTER JOIN photo ON photo.article_id=article.id AND photo.active = 1
    
  2. 再次明确允许空值:

    WHERE (photo.active = 1 OR photo.id IS NULL)
    

第二个似乎不必要地复杂,因为您已经有了外部连接。我推荐第一个。

于 2012-09-14T03:46:29.807 回答