1

我的sql不好,所以请不要因为这样的基本问题骂我。目前我正在做很多关于其他技术的功课,所以当我有时间研究它时,我会改进 sql。无论如何,让我们进入正题。

我的问题是针对以下查询。我正在尝试从三个表中获取数据,只要满足所有条件,它就可以正常工作,但问题是对于发布,可能会发生图像不存在,即不记录图像表中的发布然后post.post_id = img.post_id and img.sequence='1'条件失败并且没有行被返回,但我希望行被返回,即使发布的图像中没有记录。在这种情况下,为图像路径列返回 null。

SELECT 
    img.path as path, pav.value_text as beds, post.post_id as postID 
FROM 
    postings post, post_attributes_values pav, images img 
where 
    post.post_id = pav.post_id and post.status !='expired' and pav.attr_id='33' and post.post_id = img.post_id and img.sequence='1' and post.post_id=49

如果所有条件都满足,那么 O/P 就像

    path                beds          postId
-----------------------------------------------
    saome path value     2             49

但如果post.post_id = img.post_id and img.sequence='1'条件不满足,那么 O/P 应该是这样的:

    path        beds          postId
----------------------------------------
    null         2              49
4

1 回答 1

1

使用左外连接

SELECT 
    img.path as path, pav.value_text as beds, post.post_id as postID 
FROM 
    postings post 
    inner join post_attributes_values pav on post.post_id = pav.post_id and pav.attr_id='33' 
    left outer join images img on post.post_id = img.post_id and  img.sequence='1' 
where  post.status !='expired' and post.post_id=49
于 2012-07-30T07:23:16.560 回答