• 締切済み
  • すぐに回答を!

SQLの書き方

テーブルA ○id data テーブルB ○subId id userId ○は、プライマリ 上記のようなテーブルがあります。 テーブルBのuserIdと テーブルAのid(=テーブルBのId)を指定して テーブルA,Bのデータを取得したいです。 ただし、テーブルBに該当データ(指定したuserId)に該当する データがない場合、テーブルAのデータのみ取得したいと考えています。 一発のSQLで取得できますでしょうか? ご教示お願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数40
  • ありがとう数5

みんなの回答

  • 回答No.1

いわゆる外部結合というものです。 select a.*,b.* from a,b where a.id=b.id(+); とか select a.*,b.* from a left join b on(a.id=b.id); のような記述になります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご返信ありがとうございます。 申し訳ございませんが、上記ではできません。 自己解決しました。 ありがとうございました。

関連するQ&A

  • ACCESS SQL文について

    現在データの更新をACCESSを使って行っているのですがSQLが上手く実行されなくて困っております。 テーブル1   ID  SUBID ------------------------   100  20000   100  20000   101  20000   200  20001   201  20001   201  10000   202  20000  テーブル2   kyuID  kyuSUBID  ID  subID ------------------------------   100   20000   111  11111   101   20000   111  11111   102   20000   123  12345   200   20001   123  12345   201   20001   555  55555   202   20000   777  77777 このようにテーブルにデータが入っており、テーブル1のIDとSUBID とテーブル2のkyuID とkyusubIDを紐づかせテーブル1のIDとSUBIDをテーブル2のIDとSUBIDにアップデートしたいと考えております。 結果 テーブル1   ID  SUBID ------------------------   111  11111   111  11111   111  11111   123  12345   555  55555   201  10000   777  77777 このような結果を求めたいと考えております。 私は頭が悪く解決できません。 わかる方、ご教授のほどよろしくお願いいたします。

  • SQLの書き方

    わからないので質問をさせて頂きます。 テーブルAに、money、rank、name、IDと言うカラムがあります。 テーブルBに、IDとpointと言うカラム名があります。 テーブルAのIDを指定し、テーブルBに同じIDが存在する場合 テーブルAとBの値を取得するSQLを書いています。 Select テーブルA.money,テーブルA.rank テーブルA.name,テーブルA.ID,テーブルB.point FROM テーブルA,テーブルB Where テーブルA.ID = '5'; このように書くとmoney,rank,name、IDは重複して表示がされ pointに関してはすべてのpointが表示されてしまいます…。 重複するのでdistinctを使ったのですが うまくいかず…。 SQL初心者ですが、よろしければ教えてください。

    • ベストアンサー
    • MySQL
  • SQLの書き方がわかりません

    下記テーブルが access上にあります。 t1 ID 日付 01 2011/8/1 01 2011/9/1 02 2011/3/1 03 2011/5/30 t2 ID 日付 01 2011/7/1 01 2011/7/30 01 2011/8/1 01 2011/8/2 01 2011/9/2 02 2011/2/11 02 2011/3/1 02 2011/8/1 03 2011/4/30 03 2011/5/29 03 2011/6/30 このデータからt1を元に ID 日付1 日付2 01 2011/8/1 2011/8/1 01 2011/9/1 2011/8/2 02 2011/3/1 2011/3/1 03 2011/5/30 2011/5/29 というデータを取得するにはどのようなSQLを書けばよいでしょうか。 具体的にはt1とt2のIDが同じで、 t2の日付がt1の日付以下で最大のレコードと紐付けたいのです。

  • SQLの書き方

    はじめまして SQL Serverを使用していますが、下記のSQLの書き方がわかりません。 申し訳けありませんが、わかる方がいらっしゃいましたら、どなたか教えて下さい。 ◆質問 テーブル1とテーブル2の下記のKEYで結合させて、取り出した結果でテーブル3を更新したいです。 テーブル2はデータが複数件一致してしまうため、無条件に先頭の1レコードだけを取り出したいです。 取得できたテーブル2のid_1とid_2とid_3をテーブル3に書き出したいです。 ○KEY テーブル1.test = テーブル2.test and テーブル1.test1 = テーブル2.test1 テーブル1.id_2 = テーブル3.id_1 and テーブル1.id_3 = テーブル3.id_2 ○テーブル1 id_1   id_2   id_3   test   test1 bbb   000001   001   000001  100 bbb   000002   001   000002  100 ○テーブル2 id_1   id_2   id_3   test   test1 aaa    1    99    000001   100 ← このレコードを取り出したい aaa    2    99    000001   100 aaa    3    99    000003   100 aaa    4    99    000004   110 ○テーブル3 id_1   id_2   id_3 000001  001  aaa-1-99   ←id_3にテーブル2で取得できたid1 + id2 + id3を書き出したい 000002  001 夜遅くにすみませんがお願いします。

  • SQLについて

    以下の二つのテーブルの内、Bテーブルの"id (プライマリーキー)"の情報を元に、Aテーブルの"メールアドレス"を調べて、 特定のメールアドレスに一致した場合にBテーブルの"メールアドレス"を返す効率の良いSQLを教えてください。 [Aテーブル] id (プライマリーキー) メールアドレス [Bテーブル] id (プライマリーキー) Aテーブルのid メールアドレス

    • ベストアンサー
    • MySQL
  • 以下の場合のSQL文の書き方教えてください。

    2つのテーブルÅ、Bに同じ項目名(NYUSYA_DATE)が存在していて、 通常はAからデータを取得し、取得した値がNULLの場合は、Bから取得します。 これを1つのSQLで出来ますか? 今は、両方取得しておいて、IF文で判定しようとしています。 テーブルA SYAIN_ID (NOT NULL) NYUSYA_DATE テーブルB GROUP_ID (NOT NULL) SYAIN_ID NYUSYA_DATE

  • SQLで取得したフィールドをSQL文として利用

    お世話になっております。 MYSQLで sql_id (int PK) sql_data (text) のようなテーブル(sql_db)を持ち select sql_id from where (sql_data をsqlとして実行した結果 ) > 200 のように、フィールドから取得した値をSQLとして実行したりする方法はございますでしょうか。 ご教授よろしくお願いいたします。

  • SQLの書き方

    直前にテーブルに挿入したデータのprimary keyを取得するSQLはどう書けばいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • JOINを使ったSQL文を作成しようとしています。

    JOINを使ったSQL文を作成しようとしています。 以下の様な3つのテーブルがある場合のSQL文を教えて下さい ※勉強の為、適当なテーブルを作成しましたが、やりたい事は  JOINの中に更にJOINさせたSQL文を作成したいと思ってます 表A  USER_ID(プライマリキー)  NAME 表B  USER_ID(プライマリキー) ※表A.USER_IDと紐着く  BUMON(プライマリキー)  TERM(プライマリキー) 表C  BUMON(プライマリキー) ※表B.BUMONと紐着く  TERM(プライマリキー) ※表B.TERMと紐着く  MEMBER 【取得したい項目】  表A.USER_ID 【抽出条件】  表CのMEMBERの値が'10','20'以外(である表AのNAMEを取得)

  • SQL文の書き方について

    お世話になります。下記のような結果を求めるSQL文についてどなたかご教示をお願いします。 以下の2つのテーブル(SMPL_TBL1,SMPL_TBL2)があったとします。 (SMPL_TBL1) ID | NAME | BUSHO ---+--------+--------- 01 | YAMADA | A_GRP 02 | SUZUKI | A_GRP 03 | OKADA | B_GRP 04 | TAKAGI | C_GRP (SMPL_TBL2) ID | POINT | ---+-------+- 01 | 1 | 01 | 2 | 01 | 3 | 02 | 1 | 02 | 2 | 03 | 1 | 04 | 1 | 04 | 2 | 04 | 3 | 04 | 4 | 04 | 5 | 上記テーブルから以下のような結果を得たい場合、 どのようなSQL文を投げればいいでしょうか? (求める結果) ・各人ごとのPOINTのMAX値と各人のデータを抽出(POINTは1~999までの整数です) ID | NAME | POINT| BUSHO ---+--------+------+-------- 01 | YAMADA | 3 | A_GRP 02 | SUZUKI | 2 | A_GRP 03 | OKADA | 1 | B_GRP 04 | TAKAGI | 5 | C_GRP よろしくお願いいたします。