• 締切済み

3つ以上の外部結合から抽出するSQL構文

seiiiichiの回答

  • seiiiichi
  • ベストアンサー率41% (79/190)
回答No.2

質問です。 DBMSは何でしょうか?ORACLE?ACCESS?その他? (外部結合は表記がことなりますので。) それから、結果のレコード3とレコード4のDATA2は 「????(NULL)」ですか?「BBBBB」でなくて。 書いてあるとおりだとすると、レコード2との違いは何になりますか?

kakusan1
質問者

お礼

DBMSは、DB2です。 結果表の????????は、NULLになります。 レコード2は、TB_Aの2レコード目とTB_Bの1レコード目とTB_Cの2レコード目に該当します。

関連するQ&A

  • テーブル結合のSQL文について

    はじめまして、よろしくお願いします。 テーブルA、B、Cから情報を取得し、下記のSELECTイメージを表示させたいのですが、 どのようなSQLを記述すれば良いのかわからず、困っております。 どなたかご教示頂けますでしょうか。 SELECTイメージ  日付      キー  ------------ -------------  9/1      AAAAA  9/1      CCCCC  9/2      AAAAA  9/2      CCCCC  9/3      AAAAA  9/3      BBBBB  9/3      CCCCC  9/4      AAAAA  9/4      BBBBB  9/4      CCCCC テーブルA  日付      キー  ------------- -------------  8/31      AAAAA  8/31      CCCCC テーブルB  日付      キー  ------------ -------------  9/1      AAAAA  9/3      BBBBB  9/4      CCCCC テーブルC  日付  -------------   ・   ・   ・   8/31   9/1   9/2   9/3   9/4   9/5   9/6   ・   ・   ・

  • 複数のPKを持つテーブル同士の結合について

    以下のような2つのPKを持つテーブル同士で、お互いに存在しないPKのデータを抽出するときのSQLを教えて下さい。 以下のデータの場合、テーブルAではCODE_1がAAAAAのデータ、テーブルBではCODE_1がCCCCCのデータのことを指します。 [テーブルA] CODE_1 CODE_2 ----- --- AAAAA 123 BBBBB 123 [テーブルB] CODE_1 CODE_2 ----- --- BBBBB 123 CCCCC 123 PKがCODE_1だけの場合は、 select distinct テーブルA.CODE_1 from テーブルA,テーブルB where テーブルA.CODE_1 not in ( select テーブルA.CODE_1 from テーブルA,テーブルB where テーブルA.CODE_1 = テーブルB.CODE_1) で、AAAAAが抽出できるとこまでは分かったんですが、複数のPKになったらいきなり分からなくなってしまいました。 どうかよろしくお願いします。

  • PHPでDBからデータを抽出してHTMLで表示する

    クライアント上で表示されているHTMLのテキストボックスに入力された文字列をホストに送信し、送信した文字列をSQLの抽出条件に設定してDB(MySQL)に登録しているデータ一覧をPHPで取得後、取得したデータ一覧をクライアントのHTMLのTABLEに一覧で表示したいのですが、どのようにPHPとHTMLをプログラムすればよいでしょうか? イメージ MysSQL テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| BBBBB|BBBBB|CCCCC| DDDDD|BBBBB|CCCCC| HTML テキストボックス カラム1「AAAA」 検索実行↓ HTML テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| AAAAA|BBBBB|CCCCC| 素人染みた質問で申し訳ございませんが、ご存知の方がいらっしゃいましたら終えてください。 以上

    • ベストアンサー
    • HTML
  • SQL 外部結合について

    EXCELでODBC接続で外部データを取り込み、クエリテーブルを作成するところまではできるのですが、MicrosoftQueryを使って外部結合をしようとすると、テーブルが3個以上ある場合は外部結合できませんとエラーが表示されます。 直接SQLをさわれば出来るのかと思い、 SELECT フィールド名1, フィールド名2, ... FROM (((TABLE1 LEFT JOIN TABLE2 ON TABLE1.NO = TABLE2.NO)LEFT JOIN TABLE3 ON TABLE1.NO = TABLE3.NO)LEFT JOIN TABLE4 ON TABLE1.NO = TABLE4.NO)LEFT JOIN TABLE5 ON TABLE1.NO = TABLE5.NO を入力したのですが、「ORA-00942: 表またはビューが存在しません」というエラーが発生しました。 いろいろ調べてみたのですが全くの初心者なもので本当に困っております。 どなたかアドバイス等よろしくお願いします。

  • PHPでDBからデータを抽出してHTMLで表示

    こんにちは。 PHP初心者のものです。 クライアント上で表示されているHTMLのテキストボックスに入力された文字列をホストに送信し、送信した文字列をSQLの抽出条件に設定してDB(MySQL)に登録しているデータ一覧をPHPで取得後、取得したデータ一覧をクライアントのHTMLのTABLEに一覧で表示したいのですが、どのようにPHPとHTMLをプログラムすればよいでしょうか? イメージ MysSQL テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| BBBBB|BBBBB|CCCCC| DDDDD|BBBBB|CCCCC| HTML テキストボックス カラム1「AAAA」 検索実行↓ HTML テーブル カラム1|カラム2|カラム3| AAAAA|BBBBB|CCCCC| AAAAA|BBBBB|CCCCC| 素人染みた質問で申し訳ございませんが、ご存知の方がいらっしゃいましたら終えてください。 以上

    • 締切済み
    • PHP
  • SQLの外部結合について教えて下さい

    いつもお世話になっています。 SQL構文の外部結合が分らなくて困っています。 どうか教えて下さい。 JSPからString Nam = (request.getParameter("param"));で値を受け取ってその値でT_Tableと一致するデータのSQLを実行します。 SELECT * FROM T_Table where ID='"+ Nam +"' order by 日付 desc この結果とT_TableAの「番号」というフィールドと一致する問い合わせのSQLが分りません。自分なりに考えて作りましたがHTMLの部分の表示だけでレコードが表示されないので間違っているのだと思います。 色々調べてみましたが該当のサンプルがなかったので困っています。 教えて下さい!宜しくお願い致します。 【自分で作成してみたSQLです】 テーブルはSQL Serverです。 "SELECT * FROM T_Table where ID='"+ Nam +"' INNER JOIN where ID='"+ Nam +"' ON [T_Table].[番号] = [T_TableA].[番号] order by 日付 desc"

    • ベストアンサー
    • Java
  • SQLの書き方について

    すみません、SQL初心者なので変な質問かもしれませんが、、SQLの書き方がわからないので教えてください。以下のような二つのテーブルがあるとします。 (Table: EMP2014) EMPNO | EMPNAME | TEL 100 | TARO | 03-1111-2222 101 | HANAKO | 03-2222-3333 (Table: EMP2015) EMPNO | EMPNAME | TEL 200 | JIRO | 03-3333-4444 201 | KYOKO | 03-4444-5555 このテーブルからSQLを実行して、以下のような結果を得たいです。 EMPNO | EMPNAME | TEL 100 | TARO | 03-1111-2222 101 | HANAKO | 03-2222-3333 200 | JIRO | 03-3333-4444 201 | KYOKO | 03-4444-5555 JOINというのは二つのテーブルを左右に並べた形での結合だと思うんですけれど、僕がやりたいのは内容の似たテーブル(上記の場合全く同じカラム)を上下に単純にくっつけて一つの出力結果にしたいです。ビューなどをつくって仮想的に一つの表にできるものなのでしょうか? とても簡単なのかも知れませんが、、宜しくお願いします。

  • SQL 外部結合

    Access2003でSQLをかいています。 以下のように書いているのですが、 「結合式がサポートされていません」というエラーが発生します。 対応策をご存知の方、お教えいただけますでしょうか。 使用するテーブルは以下の3つです。 ・社員テーブル ・所属テーブル ・判定テーブル それぞれのテーブルの項目は以下のとおりです。 ▼ 社員テーブル -------------------   個人No   入社年度 ▼ 所属テーブル -------------------   個人No   所属コード ▼ 判定テーブル -------------------   所属コード   入社年度   判定フラグ 下記のようなSQLを書いています。 --------------------------------------------------------------------- SELECT A.個人No, C.判定フラグ FROM (社員マスタ A  LEFT JOIN 所属テーブル B       ON (A.個人No = B.個人No))  LEFT JOIN 判定テーブル C       ON (B.所属コード = C.所属コード AND A.入社年度 = C.入社年度) --------------------------------------------------------------------- 最終行の「AND A.入社年度 = C.入社年度」がなければ、SQLは実行できますが 入社年度で条件を絞れないので正しい結果になりません。 LEFT JOIN 句は3テーブル目の条件式で1テーブル目を参照できないということでしょうか?

  • sql*loader 数値のロード

    SQL*LOADERにて NUMBER(3,0)のフィールドに、小数点以下を含む数値をもったデータをロードすると 四捨五入か何かされて整数でデータがロードされてしまいます。 テーブル、CTLファイル、csvレコード、登録結果は以下のとおりです。 テーブル: CREATE TABLE tbl1 ( CLM001 NUMBER(3,0) NOT NULL, CLM002 VARCHAR2(30) ) CTLファイル: LOAD DATA INFILE 'tbl1.csv' BADFILE 'tbl1.bad' TRUNCATE INTO TABLE tbl1 FIELDS TERMINATED BY ',' TRAILING NULLCOLS ( CLM001, CLM002 ) csvレコード: 0.9,aaaaa 3.1,bbbbb 登録結果(SQL*LOADER実行結果): 1,aaaaa 3,bbbbb 小数点を含むデータをロード時にエラーとしたいのですが、何かいい方法ありますでしょうか? 環境はSQL*Loader: Release 9.2.0.1.0になります。

  • SQL LEFT JOIN

    SQLでわからないことがあるので質問させていただきます。 例えばの話ですが在庫テーブルというテーブルがあってそこに商品マスタ をLEFT JOINする際に SELECT *  FROM 在庫テーブル LEFT JOIN 商品マスタ ON 品番 = 品番 として実行すると返ってくる結果は在庫テーブルの全レコードと 品番で結んだ商品マスタに存在するデータってことですか? 上記のSQLと SELECT * FROM 在庫テーブル で返ってくるレコード件数が違うという時はどういう可能性が考えられるでしょうか? ちなみに商品マスタの品番レコードはすべてユニークになっていて 色やサイズで品番が複数存在するものではありません。 何回やってもレコード件数が前者のほうが多くなってしまいます。 分かる方がいらしたらぜひ教えていただきたいです。