アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下の条件を複合したSQL文を考えています。
SQLが分かる方、お手数ですがよろしくお願いいたします。
●TBL_1、TBL_2のJUDGEが共に「OK」である、IDとJUDGEとTBL_2のDATE

◆TBL_1
ID ,JUDGE,DATE
001,OK ,20100101
002,NG ,20100102

◆TBL_2
ID ,JUDGE,DATE
001,OK ,20130101
002,OK ,20130102

◆希望検索結果
ID ,JUDGE,DATE
001,OK ,20130101

おそらく結合という処理が必要なのだと思います。
SQLの知識をお持ちでお時間がある方、よろしくお願いいたします。

A 回答 (2件)

先ず、理論の組み立てが大切です。


(1)TBL_1からJUDGE=OKのものを抽出する。
(2)TBL_2からJUDGE=OKのものを抽出する。
(3)上記(1)と(2)をIDで結合する。
次にOracleのバージョンにより結合式の
書式が違います。
バージョンを明記しましょう。
最新と仮定すると、以下のようになります。

SELECT A.ID,A.JUDGE,B.DATE FROM
(SELECT ID,JUDGE FROM TBL_1
WHERE JUDGE='OK') A
INNER JOIN
(SELECT ID,DATE FROM TBL_2
WHERE JUDGE='OK') B
ON A.ID=B.ID

結合したクエリから条件を指定して抽出
するより、先に条件で絞り込んだクエリを
結合する方が件数が減っているので効率が
良くなります。まぁ、今時は機械も速いし、
件数が何十万でもなければ、どうやっても
見た目の変化はありませんが、昔はこういう
ことをしないと、処理時間に大きな差がでた
ものです。
    • good
    • 0
この回答へのお礼

実機環境詳細を書かず、申し訳ございませんでした。
Oracleは9iの環境です。
細かい説明等も教えていただき、とても参考になりました。
ご回答ありがとうございました。

お礼日時:2013/06/10 12:48

SELECT TBL_1.ID, TBL_1.JUDGE, TBL_2.DATE FROM TBL_1, TBL_2


WHERE TBL_1.ID=TBL_2.ID AND TBL_1.JUDGE = "OK" AND TBL_2.JUDGE = "OK"

かな?
    • good
    • 0
この回答へのお礼

迅速なご回答ありがとうございました。

お礼日時:2013/06/10 12:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!