1

私はSQLが苦手なので、そのような基本的な質問で私を叱らないでください。現在、私は他のテクノロジーについて多くの宿題をしているので、勉強する時間があるときにSQLを改善します。とにかく要点を述べましょう。

私の質問は以下の質問です。3つのテーブルからデータをフェッチしようとしていますが、すべての条件が満たされている限り正常に機能しますが、問題は、投稿の場合、画像が存在しない、つまり画像テーブルに投稿するための記録がない場合、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 に答える