3

私は少し問題があります、私は立ち往生しています。私は2つのテーブルを手に入れました。最初のIDはすべてのIDを保持し、2番目のIDはいくつかを保持しますが、すべてではありませんが、tableA、値、および対応する識別子からのものです。私が理解したと思ったように、IDの左結合は、最初のテーブルのすべてのIDを取得し、IDがtableBに存在しない場合は、2番目のテーブルをnullにする必要があります。しかし、私は両方のテーブルに存在するIDの数を取得し続けています。コンセプトを間違えましたか?

これまでの私の声明は次のとおりです。

SELECT tableA.id, tableB.desiredValue
FROM tableA 
LEFT JOIN tableB ON tableA.id=tableB.item_id
WHERE tableB.element_id = 'something'
OR tableB.element_id IS NULL;

ポインタはありますか?

ありがとう、よろしく、マーカス

4

3 に答える 3

2

tableB列を含む条件をからWHEREに移動しますON

SELECT tableA.id, tableB.desiredValue
FROM tableA 
LEFT JOIN tableB ON  tableA.id=tableB.item_id
                 AND tableB.element_id = 'something'

--- WHERE tableB.element_id IS NULL        --- this is probably not appropriate
;
于 2012-05-09T12:40:27.447 に答える
0

これを試して

SELECT tableA.id, tableB.desiredValue
FROM tableA 
LEFT JOIN tableB ON tableA.id=tableB.item_id
AND (tableB.element_id = 'something'
OR tableB.element_id IS NULL);
于 2012-05-09T12:32:49.690 に答える
0

一般的に、これは機能するはずです。ただし、where句については、より具体的に説明します。

SELECT tableA.id, tableB.desiredValue
FROM tableA 
LEFT JOIN tableB ON tableA.id = tableB.item_id
WHERE tableB.element_id = 'something' OR tableB.item_id IS NULL;

item_idチェックインしている行を置き換えましたが、結合が機能する行にある場合をNULL除いて、違いが生じるはずelement_idです。NULL

where句の他の部分が必要な理由を拡張できますtableB.element_id = 'something'か?すべての行を返すだけの場合の一般的な推奨事項は、WHERE句を完全に削除することです。

一般的に返される行の基準についてもう少し説明していただけますか?

于 2012-05-09T12:43:12.330 に答える