1

次の2つのテーブルがあります:AとB

Bには、A:a_idへの外部キーが含まれています。

私は次のクエリを持っています:

SELECT 。a* aFROMINNERJOINON b。= 。WHERE b.stuff = 1 AND(QueryCheckingDateWithBFields)ba_idaid

クエリを逆にしたいので、それを行いました:

SELECT 。a* aFROMINNERJOINON b。= 。WHERE b.stuff!= 1 OR(!QueryCheckingDateWithBFields)ba_idaid

1つの問題を除いて正常に動作します。最初のクエリ+2番目のクエリ=すべてのテーブルエントリが必要です。ただし、Aのaa_IDを持つBがない場合、このAは選択されません。「結合されていないAも欲しい」とはどうすればいいですか?

4

2 に答える 2

4

left outer joinの代わりにを使用し、句がない場合にサポートするように句をinner join調整します。whereB

SELECT a.* FROM a LEFT OUTER JOIN b ON b.a_id = a.id
WHERE b.id == null OR (b.stuff = 1 AND (QueryCheckingDateWithBFields))

SELECT a.* FROM a LEFT OUTER JOIN b ON b.a_id = a.id
WHERE b.id == null OR b.stuff != 1 OR (!QueryCheckingDateWithBFields)
于 2013-02-26T10:48:24.090 に答える
2

INNERJOINの代わりにLEFTJOINを使用する

于 2013-02-26T10:49:30.110 に答える