
テーブル名:AAA カラム: 'fname' ,ename
テーブル名:BBB カラム: "id",fcode
テーブル名:CCC カラム : "id",'fname',date
上記三つのテーブルAAA,BBB,CCCにそれぞれカラムがあります。
最終的に
ename fcode date の3カラムを結合した状態でSELECTします。
ただし、条件として
AAAのfname列とCCCのfname列を紐付けし、尚且つ
BBBのid列とCCCのid列を紐付けし、尚且つ
CCCのdate列が2012-10-31以上のものだけをSELECTしたいです。
上記を踏まえて下記二点ご質問致します。
(1)私が考えたSQL文は
select a.ename ,bc.fcode ,bc.date from AAA a ,
(select b.fcode ,c.fname ,c.date from BBB b , CCC c where b.id = c.id and c.date >= '2012-10-31' ) bc
where a.fname = bc.fname ;
です。先にBBBとCCCから紐付けしその結果とAAAを紐付けしています。
このSQL文で間違いがないかどうか判定していただきたく。
(2)もっとスマートな書き方(短く書けるなど)がありましたら、
ご助言いただきたく。
ちなみにデータベースはオラクル仕様です。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
きっといいと思います。
唯一気にした方がいい部分としては、日付項目は明示的に日付型に
変換した上で比較してあげましょう。
個人的には必要性がない場合にFROM句内にサブクエリを書くのが
見通しが悪くなって嫌いなので
SELECT
A.ENAME
B.FCODE
C.DATE
FROM AAA A,
BBB B,
CCC C
WHERE A.FNAME = B.FNAME
AND B.ID = C.ID
AND C.DATE >= TO_DATE('2012/10/31', 'YYYY/MM/DD')
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLでSUMなどの関数でデータが...
-
SQL、2つのテーブルで条件一致...
-
SQL*LoaderでCSVから指定した列...
-
テーブル名をカラムとして取得...
-
SQL 複数テーブルのupdate
-
sqlplusで表示が変なので、出力...
-
update文で改行を入れる
-
カラム位置変更
-
SQL(oracle)でご助言いただきた...
-
特定のカラムが更新されたとき...
-
sqlで質問です。 aテーブルとb...
-
ROWNUMでUPDATEをしたいのです...
-
件数とデータを同時に取得する...
-
SQLで違うテーブルの値を比較し...
-
ORACLE SQL 複数項目の最大抽出
-
INDEX RANGE SCAN とは?
-
Oracle(オラクル)で、日付時刻...
-
descでdefault値やキーなどを表...
-
オラクルの条件で時間を指定す...
-
数値をNUMBER型にするかCHAR型...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
update文で改行を入れる
-
SQL*LoaderでCSVから指定した列...
-
SQL、2つのテーブルで条件一致...
-
SQLでSUMなどの関数でデータが...
-
SQL 複数テーブルのupdate
-
テーブル名をカラムとして取得...
-
sqlplusで表示が変なので、出力...
-
ROWNUMでUPDATEをしたいのです...
-
SQL(oracle)でご助言いただきた...
-
カラム位置変更
-
件数とデータを同時に取得する...
-
OracleのSQLで同テーブルのカラ...
-
LONG型の先頭250バイトを Varch...
-
数値をNUMBER型にするかCHAR型...
-
特定のカラムが更新されたとき...
-
半角英数文字の抽出がしたい。
-
DBからタブ区切りのCSVデータを...
-
sqlで質問です。 aテーブルとb...
-
SQLについて教えて下さい。 主...
-
Oracleのview、synonymをCOMPIL...
おすすめ情報