こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

SQLがわかりません。。

すみません、単純な質問かもしれませんが、どう組み立てたら良いのか悩んでいますので、SQL文について質問させてください。

以下の様な2つのテーブルがあります。

○テーブル1
-----------------------------------
ID bangou1 bangou2
1 1 2
2 3 4
3 2 4


○テーブル2
-----------------------------------
ID bangou flag
1 1 1
2 2 1
3 3 0
4 4 1


●希望する取得結果
テーブル1のID:1,ID:3


bangou1、bangou2は、テーブル2のIDを設定しています。
このとき、テーブル2のflagに0が設定されている場合はbangou1、bangou2のどちらにあってもテーブル1のIDは取得したくありません。

このSQLを組み立てる方法がいまいち思いつきません。
どうかアイデアをお願いします。

投稿日時 - 2008-07-18 02:19:08

QNo.4185128

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ANo.1さんの回答とは別の一例として…

select テーブル1.ID, ・・・(省略)
from テーブル1 a
, テーブル2 b
, テーブル2 c
where a.bangou1 = b.ID
and a.bangou2 = c.ID
and b.flag <> '0'
and c.flag <> '0'
;

テーブル2を別々に2回リンクしてそれぞれで判定します。
ただし、これだとテーブル2が未存在の場合、表示されないという状況になりますが、それは外部結合なりで解決できるかと思います。

また、flagが数値項目の場合「'」は不要となります。
「and b.flag * c.flag <> 0」といった事も可能になります。

投稿日時 - 2008-07-26 11:13:38

ANo.1

select * from テーブル1 tbl1
where not exists
( select 1 from テーブル2 tbl2
where ( tbl2.flag=0 )
and ( tbl1.bangou1=tbl2.id or tbl1.bangou2=tbl2.id ) )

投稿日時 - 2008-07-18 03:17:33

あなたにオススメの質問