SQLで「結果同士」の比較をするには?
- SQLで「結果同士」の比較をする方法についての質問です。AテーブルとBテーブルのデータを比較する際に、同一データが存在しない場合は「XXXXX」と比較する方法を知りたいです。
- AテーブルとBテーブルのデータを比較する際に、同一のデータが存在しない場合は「XXXXX」と比較する方法を教えてください。
- SQLで「結果同士」の比較をする方法について教えてください。AテーブルとBテーブルのデータを比較する際に、同じデータが存在しない場合は「XXXXX」と比較したいです。
- ベストアンサー
SQLで「結果同士」の比較をするには? part2
http://okwave.jp/qa/q7096734.html こちらでお世話になり希望していた要件が実現できました。 本当に助かりました。ありがとうございます。 そこでなのですが、この条件で抽出すると私の認識不足で完全なデータが得られない場合が、あることがわかりました。 Aテーブル構成 KY項目1_____KY項目2_____Int型データ・・・ Bテーブル構成 KY項目1_____KY項目2・・・ KY項目2についてですが、A、Bそれぞれのテーブルで同一データが入っていると限らないことがわかりました。(同一データしか無いと思っていました・・・) なので例えばAテーブルに入っているKY項目2がBテーブルKY項目2と同一の場合は教えていただいたように Aテーブル.KEY2=T.KEY2と結べば問題ないのですが、 AテーブルのKY項目2と同一データがBテーブルのKY項目2に存在しない場合、無条件でデータ「XXXXX」と比較するというようにしたいのですが・・・ 条件分岐で調べたところCASE式でも使えばいいかと思ったのですが・・・こういった場合どう記述したらいいのでしょうか?
- mr-r00
- お礼率93% (480/516)
- Oracle
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
nora1962さんのSQLを拝借 下記でどうでしょう。 ---- SELECT Aテーブル.*, CASE WHEN T.CNT IS NULL THEN XXXXX ELSE T.CNT END AS 比較 FROM Aテーブル LEFT JOIN ( SELECT Bテーブル.KEY1,Bテーブル.KEY2,COUNT(*) CNT FROM Bテーブル GROUP BY Bテーブル.KEY1,Bテーブル.KEY2 ) T ON Aテーブル.KEY1=T.KEY1 AND Aテーブル.KEY2=T.KEY2
関連するQ&A
- SQLで「結果同士」の比較をするには?
SQLで「結果同士」の比較をするにはどのように記述したらいいのでしょうか? Ora10gです。 例えば、構成としてAテーブルは KY項目1_____KY項目2_____Int型データ とします Bテーブルも KY項目1_____KY項目2・・・ といったデータ構成だとします。 Bテーブルのデータを group by KY項目1, KY項目2でカウントした時の件数とAテーブルのInt型データの数が一致しているか比較したいのですが、どのようなSQLでできますでしょうか?
- ベストアンサー
- Oracle
- SQLの記述について
SQLの記述で Aトランザクションテーブル(以後Aテーブル)とBマスタテーブル(以後Bマスタ)が有り, AテーブルにBマスタの内容を反映させ或る条件のデータだけ抽出は可能でしょうか? 例 Aテーブルの内容をBマスタを検索しデータがAの場合のみ抽出 Aテーブル Bマスタ キー データ キー データ 001 0001 001 A 001 0002 002 B 002 0003 003 A 001 0004 004 C 002 0021 003 0005 004 0001 実行結果 キー データ 001 0001 001 0002 001 0004 003 0005 上記の結果のように,Aテーブルの内容からBテーブルを見て条件を判断しての抽出は可能でしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- データがあれば○○なければのSQL
基本的なことなのかもしれませんが・・・ AとBというテーブルがあり、あるタイミングでAを元にBを作成します。つまりBはデータがある場合とない場合があります。また、2つは関連番号で紐づいています。 Aテーブルを抽出したい時に、抽出条件は以下です。 ・Bテーブルのステータスが1であれば抽出 ・Bテーブルのステータスが0であれば非抽出 ・Bテーブルにデータがなければ抽出 INNER JOINだとデータがない時に抽出できないし、 WHERE句にCASE句を入れればいいのかなと思いましたが、テーブルにデータがあればなんて条件書けないしで詰まりました。 SELECTした結果に対して条件つけて抽出する手も思いつきましたが もっと美しいSQLがあれば教えてもらえないでしょうか。 環境はSQLServerです。よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- ある条件でのSQLの取得方法について
以下の条件でのSQLのデータの取得方法が分かりません。 2つのテーブルがあるとします。 ・テーブルA キー 項目1 10 X 20 Y ・テーブルB キー 項目2 項目3 10 5 C 10 6 D 12 6 E ここで取得する条件として ■テーブルAにあるのは、必ず取得します。 ■テーブルAのキーとテーブルBのキーは繋がり、繋がったテーブルBの情報は 別レコードとして取得します。 ■テーブルAのキー1つに対して、テーブルBのキーは無いかも知れないし、 複数件あるかも知れません。 無い場合はテーブルAの情報のみを出力し、複数件ある場合はその全てを出力します。 ■テーブルBの項目2が同じ値のデータがある場合、テーブルBを出力したレコードと 同じレコードに、項目2が同じデータの情報を出力します。 項目2が同じデータが無い場合はこの情報は出力しません。 項目2が同じ値のデータは最大2件しかありません。 上記の例の場合に出力したい結果 ・出力テーブルC キー フラグ 項目1 項目2 項目3 項目2が同じキー 項目2が同じ値 10 テーブルA X 10 テーブルB 5 C 10 テーブルB 6 D 12 E 20 テーブルA Y (テーブルC のフラグとは、テーブルAの情報かテーブルBの情報かを示します) これを出来ればSQL、出来なければPL/SQLで取得したいのですが どちらの場合でも取得の方法に悩んでいます。 どのような方法で取得できるのでしょうか?
- ベストアンサー
- Oracle
- データ抽出SQLについて
以下の様なテーブル内容のデータがあり、抽出条件:項目Aが同一でかつ、その項目Aに対する項目Bの値がひとつでも異なっている項目Aを抽出するSQLについて教えてもらえないでしょうか。よろしく御願い致します。 <データの内容> 項目A 項目B 0001 A 0001 A 0002 A 0002 B 0003 C 0003 A 0003 A 0004 B 0004 B 0004 B 0004 B <抽出結果> 0002 0003
- ベストアンサー
- SE・インフラ・Webエンジニア
- SQL - 3つのキーに含まれないもの?
いつもお世話になっております。 テーブルAと、テーブルA_WRKがあり、 テーブルA_WRKはテーブルAと同じレイアウトです。 2つのテーブルのキーは3つあります。 二つのテーブルをUNIONでくっつけて表示したいのですが、 テーブルA_WRKにあるデータと同じキーのテーブルAのデータは 検索対象からはずしたいのです。 これがキーが一つだったら Select * テーブルA_WRK Where キー項目1 = 条件 Union Select * テーブルA Where キー項目1 = 条件 And キー項目1 Not In (Select * テーブルA_WRK Where キー項目1 = 条件) で検索できると思うのですが、 3つキーがある場合にどう書いてよいかわかりません。 使用DBはSQLServer2000です。 宜しくご教授お願いいたしますm(__)m
- ベストアンサー
- SQL Server
- SQL INSERT文を作成したいのですが
お世話になります。 INSERT文を作成したのですが条件が多すぎて難しいです。 教えてください。 ・AテーブルにB・C・D・Eテーブルを元にデータを抽出しINSERT処理をしたいです。 ・データはBテーブル(親)の項目1が'10'の場合 ・結合条件はCテーブル(子)=B.項目2 = C.項目2 Dテーブル(子)=B.項目2 = D.項目2 Eテーブル(子)=B.項目2 = E.項目2 アドバイスをよろしくお願いします。
- 締切済み
- Oracle
- 【至急】SQLの結合について教えてください(2)
select * from A select ef from B where ef = '3' かつ、A.ab = B.ab and A.cd = B.cd 至急質問させてください。 上記SQLを結合したいです。 取得したいデータはAのテーブルの全項目で、 取得条件として、Aのテーブルのキー項目 = Bのテーブルのキー項目に、Bのテーブルの項目ef = '3' だったらという条件を加えたいです。 どのようなSQLがスマートでしょうか。。 無知で申し訳ございませんが、ご教授いただけますと幸いです。 よろしくお願いいたします。 ※キー項目の値は条件に指定できない(持っていない)ことがわかりました。 先ほどの質問にご回答下さった皆様、申し訳ございません。
- ベストアンサー
- SQL Server
- SQLでデータを抽出する方法
テーブルAとテーブルBがあり、AとBには「項目番号」と言うフィー ルドがそれぞれある。 この時、Aの「項目番号」とBの「項目番号」が一致しないデータを 抽出したい。 例: A:番号,名称 1 ,あ 2 ,い 3 ,う B:番号 1 4 5 この場合、抽出したいデータは、 番号 2 ,い 3 ,う なのですが、どうしても、 1 ,あ 1 ,あ 2 ,い 2 ,い 2 ,い 3 ,う 3 ,う 3 ,う となってしまいます。 どうしたら良いか教えてください。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
お礼
ありがとうございます。説明が下手にもかかわらずご回答いただき感謝しております。