親テーブルから取得するデータのIDの範囲をbetweenで指定するのですが、その値の範囲(START_ID, END_ID)が参照テーブルに不連続に設定されています。
そして、参照テーブルで指定されているIDに該当するデータには○をつけたいです。
使用している言語はPostgreSQL 9.3です。
検索したい値の範囲が設定されたテーブル
・参照テーブル
|ID|START_ID|END_ID|
|:--|:--|
|1|2|4|
|2|7|10|
|3|15|20|
自分で考えた際は参照テーブルをFROM句に書いて、BETWEEN句の開始/終了を参照テーブルの項目を指定していたのですが、これだとテーブルが結合されてしまい、不要なデータができてしまいます。(当然ですが)
SQL
1--自分で考えたSQL 2SELECT 親テーブル.* , 3 CASE 4 WHEN 親テーブル.ID BETWEEN 参照テーブル.START_ID AND 参照テーブル.END_ID THEN '○' 5 ELSE '' 6 END AS FLAG 7FROM 親テーブル, 参照テーブル
副問合せをするにも、STARTとENDの2つの項目を指定する方法がわかりません。
(各々の項目に対して副問合せをしても、データ毎のひも付きがわからないためエラーとなる)
ご教授をお願いします。
回答2件
あなたの回答
tips
プレビュー