• 締切済み

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を組み立てる方法がいまいち思いつきません。 どうかアイデアをお願いします。

みんなの回答

  • Tiffa9900
  • ベストアンサー率31% (68/216)
回答No.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」といった事も可能になります。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.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 ) )

関連するQ&A