• ベストアンサー
  • すぐに回答を!

簡単なSQLに関して

初歩的なSQLの質問で申し訳ありません。 教えて下さい。 下記のような、ある2つの異なる名前の同項目のテーブルが存在します。 《テーブル》 Aテーブル   社員番号、日付、内容 Bテーブル  社員番号、日付、内容  ※ 内容に関しては、AテーブルとBテーブルで全く違います。 これらの2つのテーブルをマージさせ、社員番号毎の内容毎、日付順に したいと考えています。 どのようなSQLを書けば良いでしょうか?? 尚、テーブルに関しては、諸事情であえて2つに分けてあります。 よろしくお願いします。

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

  • 回答数2
  • 閲覧数106
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2

3つある場合は、 SELECT * FROM ( SELECT 社員番号, 日付, 内容 FROM Aテーブル UNION SELECT 社員番号, 日付, 内容 FROM Bテーブル /*--------追加ここから--------*/ UNION SELECT 社員番号, 日付, 内容 FROM Cテーブル /*--------追加ここまで--------*/ ) ORDER BY 日付, 社員番号, 内容 ……という風にUNIONでつなげていけばOKです。

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

質問者からのお礼

Picosoft様、本当にありがとうございました!!

関連するQ&A

  • テーブルのマージSQLに関して

    初歩的なSQLの質問で申し訳ありません。 以前にも同じような内容で投稿させて頂きましたが、教えて下さい。 下記のような、ある異なる名前の同項目を持つ2つのテーブルが存在します。 《テーブル》 Aテーブル   社員番号、日付、内容、所属、時間、結果 Bテーブル  社員番号、日付、内容、理由  ※ 内容に関しては、AテーブルとBテーブルで全く違います。 これらの2つのテーブルをマージさせ、社員番号毎の内容毎、日付順に したいと考えています。 以前に以下のようなUNIONを教えてもらいましたが、所属、時間、結果、理由という 項目全てを出力するとした場合、どのように記載すれば良いでしょうか? UNIONの場合、項目が異なるとエラーとなってしまうかと、、、 《UNIONのSQL》 SELECT * FROM ( SELECT 社員番号, 日付, 内容 FROM Aテーブル UNION SELECT 社員番号, 日付, 内容 FROM Bテーブル ) ORDER BY 日付, 社員番号, 内容 教えて下さい。 よろしくお願いします。

  • オラクルSQLについて

    初心者です。困っています。 テーブルC 日付_番号_ステータス 1/3____1_____Q 1/5____2_____R 1/6____5_____G 1/7____7_____P 1/20__ 9_____R 2/1___10_____R このようなテーブルを、1.日付順、2.番号順の優先順位で、選択していく為、下記のようなSQLを作成しました。 SELECT 番号 FROM テーブルC WHERE (TO_CHAR([日付],'yyyyMMdd') || [番号]) IN (select MIN((TO_CHAR([日付],'yyyyMMdd') || [番号])) FROM テーブルC WHERE (TO_CHAR([日付],'yyyyMMdd') || [番号]) > (SELECT (TO_CHAR([日付],'yyyyMMdd') || [番号]) FROM テーブルC WHERE [番号]=前回編集した番号)) ユニークなのは番号だけです。 これに、ステータス が RかPの場合 を加えたいだけなのですが、SQLが多くなりすぎて、困難になってしまいました・・・。 どなたかご教授頂ければ幸いです。

  • ソートに関して(ACCESS)

    教えて下さい。 あるテーブルに日付項目が2つ存在し、それら2つの項目を使って並び替え(昇順) をしたいと考えています。 《テーブル》  AAA 名前、日付1、日付2 山田,20130101, 山田,,20131201 山田,20130401, 結果として、 名前,日付X 山田,20130101 山田,20130401 山田20131201 という日付1と日付2がマージされた結果をソートするようなSQLができないかと考えて おります。 どのようなSQLを記述すれば良いか、教えて下さい。 よろしくお願いします。

その他の回答 (1)

  • 回答No.1

> 社員番号毎の内容毎、日付順 の意味がよくわかりませんが、 項目名が同じならUNIONするだけでいいと思います。 SELECT * FROM ( SELECT 社員番号, 日付, 内容 FROM Aテーブル UNION SELECT 社員番号, 日付, 内容 FROM Bテーブル ) ORDER BY 日付, 社員番号, 内容 ……とか?

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

質問者からのお礼

Picosoft様、ご回答ありがとうございます。 イメージ通りの値になりました! ありがとうございました。 ちなみに、同じテーブルが3つ存在した場合はどのように記述するのでしょうか、、、 追加の質問で申し訳ありません。 教えて下さい。

関連するQ&A

  • SQL 集計について

    集計方法がどうしてもわからないのでご教授ください。 下記のテーブルを持っています。 テーブル1では日々の売上金額を管理し、 テーブル2では一週間の日付が保存されています。(月曜日~日曜日) -------テーブル1-------           日付    売上金額   2013/09/01     3000   2013/09/02     4000   2013/09/03     2000    ・              ・           ・           2013/09/30     1000 ----------------------- --------テーブル2---------  日付(月)    日付(日)    2013/08/26   2013/09/01 2013/09/02   2013/09/08    ・        ・    ・       2013/09/30   2013/10/06 ------------------------- テーブル1とテーブル2の情報をもとに テーブル3にある、日付(月)と日付(日)は、テーブル2から持ってきて、 一週間の集計を行いたいと思っております。 --------------テーブル3--------------  日付(月)    日付(日)    売上金額 2013/08/26  2013/09/01     3000 2013/09/02  2013/09/08     6000   ・   ・   ・ 2013/09/30  2013/10/06     1000 ------------------------------------ このようにするにはどのようなSQLを組めばいいのでしょうか? SQL初心者のため、難しい単語などを使わずに ご説明をしていただければと思います。 どうぞ、よろしくお願いいたします。

  • SQLでの抽出条件

    SQL初心者です。初歩的な質問だと思いますが、ご教授願います。 以下のような2つのテーブルがあります。 【テーブルA】 グループ 社員番号 A 1 A 2 A 3 B 4 B 5 B 6 C 7 C 8 D 9 D 1 【テーブルB】 社員番号 1 9 テーブルBの社員番号と一致する場合、テーブルAをグループ単位で抽出しないようにしたいです。  ・グループAは社員番号1が一致するため抽出しない。  ・グループDは社員番号1と9が一致するため抽出しない。 【取得結果】 グループ 社員番号 B 4 B 5 B 6 C 7 C 8 説明が分かりづらくて申し訳ありませんが、よろしくお願い致します。

  • 他テーブルの区分を使っての集計に関して

    教えて下さい。 AとBというテーブルが存在し、それぞれ Aテーブル 社員番号、金額 Bテーブル 社員番号、部署コード という項目となっています。 ※ かなり簡単なテーブルに省略してありますが、、、、 上記のBテーブルの部署コード毎にAテーブルの金額を集計したいと考えていますが、 そのようなSQLはどのように書くのでしょうか。。。 単純にfrom句で2つのテーブルを指定し、where句で社員番号で結合し、group by で部署コードを指定してもできなかったものですから。。。 初歩的な質問で申し訳ありませんが、教えて頂ければ幸いです。 よろしくお願いします。

  • SQLの問題です。

    以下のような二つのテーブルがあります。 社員テーブル 社員番号 社員氏名 1     花子 2     太郎 所属テーブル 社員番号 所属番号 1     10 1     20 2     30 欲しいのは以下の結果です。 1 花子 2 太郎 以下のSQLを実行すると、 SELECT distinct a.社員番号, a.社員氏名, b.所属番号 FROM 社員 a,所属 b where a.社員番号 = b.社員番号 order by 所属番号 1 花子 1 花子 2 太郎 となってしまいます。 先に述べたとおりの結果を取得するにはどういうSQLを書いたらいいでしょうか? お知恵を貸してください。宜しくお願いします。 Oracle8iを使用しています。   

  • SQL

    SQLの初心者です。 次のようなテーブルがあるとします。 項目:A , B , C , D このテーブル合計を求めたいのです。 条件は、 同一テーブルでB=10の時のAの合計とD=10の時のCの合計の合計です。 B=10の時のAの合計は「sql sum(A) from テーブル where B=10」となります。 D=10の時のCの合計は「sql sum(C) from テーブル where D=10」となります。 この2つの合計を求めたいのです。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • 効率の良いSQL文の書き方を教えてください

    MySQLで開発をしています。 1回のSQLで、下記テーブルの内容を日付・ユーザ番号毎(日付・ユーザ番号が同じ時に同じレコード)に、 型番1個数、 型番2個数、 その他が2か3で型番2・品番1個数、 その他が2か3で型番2・品番1個数、 その他が2か3で型番2・品番1での売上小計、 その他が2か3で型番2・品番2個数での売上小計、 売上合計、 以上の各カラムを持つテーブルに再編して返したいのですが、 効率の良いやり方がわかりません。 どなたかよろしくお願いします。 テーブル ユーザ番号 日付   型番  品番   売上  その他 ----- --- --- --- --- ---  001     3/10    1    2     500    1  001     3/10    2    1      0    1  003     3/11    2    1     100    2  004     3/12    1    1     100    2  005     3/12    2    2      0     2  001     3/13    1    2     500    1  003     3/13    2    1     100    2  003     3/13    2    1      0     3  002     3/14    1    1     100    3  005     3/15    2    2     0      1

  • 一度のSQL発行で結果を得るにはどのようなSQLにすれば良いでしょうか

    一度のSQL発行で結果を得るにはどのようなSQLにすれば良いでしょうか? データベースはOracleです。 二つの履歴テーブルがあり、それぞれ主キーは「連番」です。 連番が最も大きい値の社員番号と社員名を取得しようとしています。 (他にもカラムはありますが質問では省略しています。) 連番は別に管理テーブルがあり、そちらから採番しているので 二つのテーブルで連番が重複することはありません。 【RIREKI_TBL_A】 連番 NUMBER(10) 社員番号 VARCHAR(7) 社員名 NVARCHAR(20) 【RIREKI_TBL_B】 連番 NUMBER(10) 社員番号 VARCHAR(7) 社員名 NVARCHAR(20)

  • SQL 重複しないJoinの仕方を教えてください

    データが重複しないSQL文の書き方を教えてください。 下記のような2つのテーブルがあり、「管理番号」でOnして「使用数」をJoinさせ、かつ重複しないようにSQLを作成したいのですが、MySQLで可能でしょうか? ※0002に関しては、テーブル2の方がデータ数が多いため、Join後は2行になって「使用数」は重複せず、「数」の部分には0が入ればベストです 【テーブル1】 日付    品番  管理番号 数 2012/6/12 A987  0001 500 2012/6/14 A987  0001 300 2012/6/16 A987  0001 400 2012/6/18 A987  0001 800 2012/6/12 A987  0002 750 2012/6/12 A987  0003 540 2012/6/14 A987  0003 740 2012/6/16 A987  0003 840 2012/6/18 A987  0003 240 2012/6/20 A987  0003 640 【テーブル2】 日付    品番  管理番号 使用数 2012/7/10 A987  0001 160 2012/7/11 A987  0001 260 2012/7/10 A987  0002 220 2012/7/12 A987  0002 320 2012/7/20 A987  0003 530 2012/7/22 A987  0003 430 2012/7/24 A987  0003 830 【テーブルJoin】 日付    品番  管理番号 数 使用数 2012/6/12 A987  0001 500 160 2012/6/14 A987  0001 300 260 2012/6/16 A987  0001 400 0 2012/6/18 A987  0001 800 0 2012/6/12 A987  0002 750 220 2012/6/12 A987  0002 0 320 2012/6/12 A987  0003 540 530 2012/6/14 A987  0003 740 430 2012/6/16 A987  0003 840 830 2012/6/18 A987  0003 240 0 2012/6/20 A987  0003 640 0

  • SQL:Access:プライオリティが異なる2つのテーブルのマージ

    みなさん、こんばんは。 下記のような TBLmain、TBLsub という2つのテーブルをマージするにあたって、 主キーが同じであるレコードがそれぞれのテーブルに存在する場合には、 TBLmain を優先させ、TBLresult のような結果を得たいのですが、 どのように SQL を記述すればよいのでしょうか? DB は Access2000 を使用しています。 どうぞ、よろしくお願いいたします。 TBLmain 1 aaa 4 bbb 8 ccc TBLsub 1 XXX 2 TTT 3 YYY TBLresult 1 aaa 2 TTT 3 YYY 4 bbb 8 ccc

  • 2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。

    2つのテーブルAとBをマージして新しいテーブルCを作成したいのです。マージするときは、最新の売上日フィールドをもつレコードを取得します。環境はAccess2000です。どんなSQL文を作成すればいいのでしょうか?  また、テーブルAにしかないレコード、又はテーブルBにしかないレコードは、そのままテーブルCに追加したいです。 ※下記テーブルAとBは、Access内に存在します。テーブルCはAとBのマージ後の結果作成されるテーブルです。 テーブルA 顧客番号   売上日   商品名   備考    1  2000-01-01  ふでばこ   A    2  2000-02-02  鉛筆     A    3  2000-03-03  定規     A    4  2000-04-04  シャーペン  A   99  2000-09-09  パソコン   A テーブルB 顧客番号   売上日   商品名   備考    4  2001-04-04  シャーペン  B    2  2000-02-02  鉛筆     B    3  2001-03-03  定規     B    1  1999-01-01  ふでばこ   B  100  2005-11-11  ワープロ   B テーブルAとBを、最新の売上日の条件でレコードを取得し新しいテーブルCを作成する。 テーブルC 顧客番号   売上日   商品名   備考    1  2000-01-01  ふでばこ   A    2  2000-02-02  鉛筆     A    3  2001-03-03  定規     B    4  2000-04-04  シャーペン  A   99  2000-09-09  パソコン   A  100  2005-11-11  ワープロ   B SQL文で処理可能なのでしょうか?