複数のテーブルをMAX関数を使って結合する方法について

このQ&Aのポイント
  • 各支店での商品毎の最新情報を表示する一覧表を作成する際、3つ以上のテーブルを結合する方法についてご質問です。
  • 現在は2つのテーブルの結合はできているが、3つ以上の結合ではどのようにすれば良いのか困っています。
  • お使いの環境はC#、データベースはAccess MDBです。
回答を見る
  • ベストアンサー

複数のテーブルをMAX関数を使ってから結合したい

いつもお世話になります。 ツールを作ることになり四苦八苦しているのですが、 各支店での商品毎の最新情報を表示する一覧表を作成したいと考えております。 商品マスタから外部結合にて作成しているのですが、表示項目に日付のみを表示 するのは日付の最大値ので表示できるのですが、項目が増えると表示できずに 困っております。 2つのテーブルの結合では下記のやり方でできたのですが、3つ以上の結合では どのようにすれば良いのでしょうか? http://okwave.jp/qa/q3297506.html 環境はC#及び データベースはAccess MDBです。 よろしくお願いいたします。 商品マスター 商品品番 商品名 A 商品A B 商品B C 商品C 支店Aテーブル 日付 商品品番 売上 2016/5/1 A 100 2016/5/2 B 120 2016/5/3 C 140 支店Bテーブル 日付 商品品番 売上 2016/6/1 A 100 2016/6/2 A 120 2016/6/3 C 120 支店Cテーブル 日付 商品品番 売上 2016/7/1 B 100 2016/7/2 B 120 2016/7/3 C 100 実現したい表示 商品品番 商品名 支店A販売日 支店A売上 支店B販売日 支店B売上 支店C販売日 支店C売上 A 商品A 2016/5/1 100 2016/6/2 120 null null B 商品B 2016/5/2 120 null null 2016/7/2 120 C 商品C 2016/5/3 140 2016/6/3 120 2016/7/3 100

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

  • ベストアンサー
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

2つの結合が出来たのなら、それを一つのテーブルと見立てて、それと3つ目のテーブルとをJOINすればいけますよ。 SQLはデータベースによって方言があるので、参考URLは参考として(考え方は同じです)Accessではどう表現するか試してみてください。 頑張ってください。

参考URL:
http://pgcafe.moo.jp/SQL/main_2.htm
kazpanda
質問者

お礼

oboroxxさん コメントありがとうございます。 2個結合から追加してみます。 しばらく考えてみます。 ありがとうございました。

関連するQ&A

  • テーブルとテーブルを結合したい

    同じフィールドを持つテーブル同士のデータを結合して、別のテーブル又はクエリに表示させたいのですが、こんなことできますか?できるとすればどうすればよいのですか? 例:テーブルAの商品フィールドのデータとテーブルBの商品フィールドのデータを一つにまとめてテーブルC又はクエリCに表示させたい。

  • 複数テーブルを結合するには?

    OS:WINDOWSXP SP2 ORACLE:Oracle9i Enterprise Edition Release 9.2.0.1.0 A, B, Cというテーブルがあるとします。 それぞれのテーブルには XXカラムと YYカラムがあるとします。 2つのテーブルを結合させるには、以下のSQL文を記述すれば良いと考えています。 SELECT A.*,B.* FROM A JOIN B ON A.XX = B.XX 3つのテーブルを結合するには、以下のSQL文を記述しています。 SELECT A.*,B.*,C.* FROM A JOIN B ON A.XX = B.XX JOIN C ON A.XX = C.XX 但し、この記述方法でいきますと、Cテーブルを右側外部結合に指定した場合のみ、 ORA-00904 "C" 無効な識別子です。 というエラーメッセージが表示されます。 SELECT A.*,B.*,C.* FROM A JOIN B ON A.XX = B.XX RIGHT OUTER JOIN C (←LEFT OUTER、FULL OUTER)なら通ります) ON A.XX = C.XX 何故、右側外部結合のみ不正となるのか不明であり、解決策が見つかりません。 複数のテーブルを結合する為のSQL文の記述方法を教えて頂けますでしょうか?

  • 複数のテーブル結合と件数の表示

    現在、3つのテーブルを結合して、特定の場所のみ件数を表示するSQLを作成しようとしています。 MySqlバージョン5.0.27 レイアウト的には以下の感じです。 販売員テーブル 販売員ID 店舗ID 販売員名    1    1 販売員A    2    1 販売員B    3    2 販売員C    4    2 販売員D    5    3 販売員E 店舗テーブル 店舗ID  店舗名   1   店舗A   2   店舗B   3   店舗C 売却履歴 履歴ID 販売員ID  売却日  会員フラグ   1    1  2007/11/01     1   1    1  2007/10/01     0   1    2  2007/10/01     1   1    2  2007/10/01     1   1    3  2007/09/01     1   1    4  2006/01/01     0 結果 販売員ID 販売員名 店舗名 販売回数 会員勧誘回数    1  販売員A 店舗A     2      1    2  販売員B 店舗A     2      2    3  販売員C 店舗B     1      1    4  販売員D 店舗B     0      0    5  販売員E 店舗C     0       0 販売回数は今年度の範囲内で検索をかけています。(日にちが2007/01/01以上) 現在テーブルを連結して表示までは出来るのですが、履歴の内容を日付で絞りカウントして持ってくる処理が成功しません。 結合のSQLは以下の通りです SELECT 販売員.*, 店舗.店舗名,履歴.* FROM ( 販売員 LEFT JOIN 店舗 ON 販売員.店舗ID = 店舗.店舗ID) LEFT JOIN 履歴 ON 販売員.販売員ID = 履歴.販売員ID 結合時にCOUNT等の処理や条件を使って日付で絞り込む方法がいまいちよくわからない状況です。 ご教授よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 複数のテーブルを外部結合する

    複数のテーブルを外部結合してSUMをとってきたいとき、SQLServerではどのような結合にすればよいのでしょう。 一対一の関係なら「LEFT JOIN」を使って「FROM テーブルA LEFT JOIN テーブルB ON テーブルA.フィールド = テーブルB.フィールド」ができますが、一対複数の関係で書き方がよくわからず、かなり困っています。 例) ユーザーマスター ・ユーザーID ・ユーザー氏名 ○月売上テーブル←○には1~12が入る ・ユーザーID ・売上金額 欲しいデータは ・ユーザーID ・ユーザー氏名 ・SUM(1月売上テーブル.売上金額) 1月 ・SUM(2月売上テーブル.売上金額) 2月 ・SUM(3月売上テーブル.売上金額) 3月 以降、12月まで続く ORACLEだと↓のやり方で、 ・ユーザーマスターはすべて ・各月の売上テーブルはユーザーID毎に集計(外部結合) を出力してくれるのですが…。 SELECT u.ユーザーID,u.ユーザー氏名, SUM(m1.売上金額),SUM(m2.売上金額),SUM(m3.売上金額),,, FROM ユーザーマスター u, 1月売上テーブル m1, 2月売上テーブル m2, 3月売上テーブル m3,,, WHERE u.ユーザーID=m1.ユーザーID(+) AND u.ユーザーID=m2.ユーザーID(+) AND u.ユーザーID=m3.ユーザーID(+),,, GROUP BY u.ユーザーID,u.ユーザー氏名 ORDER BY u.ユーザーID,u.ユーザー氏名

  • テーブル結合について

    テーブルの結合についてお聞きしたいことがあります。 カラム「KEY」を結合条件に テーブルA、B、Cを結合して【取りたい結果】のようなデータを取りたいと思っています。 しかし、テーブルAにBとCをLEFT JOINを結合した所、 【取得された結果】のデータが取得されました。 どのような結合をしたら期待通りの結果が得られるのでしょうか? 回答宜しくお願いします。 【取得された結果】 key dataA dataB dataC ------------------------------------------------- 1 A-1 B-1 C-1 A-1 B-1 C-2 A-1 B-1 C-3 2 A-2 3 A-3 【取りたい結果】 key dataA dataB dataC ------------------------------------------------- 1 A-1 B-1 C-1 A-1 C-2 A-1 C-3 2 A-2 3 A-3 【テーブルA】 key dataA --------------------- 1 A-1 2 A-2 3 A-3 【テーブルB】 key dataB --------------------- 1 B-1 【テーブルC】 key dataC --------------------- 1 C-1 1 C-2 1 C-3

  • テーブルを結合

    テーブルの結合に関して質問します。 ネットなどでinner joinを使った複数のテーブル結合が参考として 書いてあったのですが(3つまで), 4つテーブルを結合する事は 出来るのでしょうか? A,B,CテーブルにはID,NAMEがあります。 DテーブルにはA,B,CテーブルのIDがあります。 参考サイトを見て3つのテーブルを結合するSQLが以下になります。 SELECT a.name, b.name, c.name FROM a INNER JOIN (b INNER JOIN c ON b.id = c.id) ON a.id = c.id よろしければアドバイスお願いします。

  • テーブルの結合?SQL文を教えてください。

    どうしても自分で解決できなかったので、教えてください。 2つのテーブル(AとB)から結果(☆)を取り出したいです。 テーブルレイアウトと値は下記の通りです。 テーブルA(A_NO DAT_NOが主キー) A_NO DAT_NO B_NO C_NO D_NO 0001 1 100 1000 Null 0001 2 Null Null A001 0001 3 200 2000 Null 0001 4 200 2000 A002 0001 5 300 3000 A003 テーブルB(B_NO C_NOが主キー) B_NO C_NO D_NO LEN DIV 100 1000 A001 10 01 100 1000 A002 10 01 100 1000 A003 Null Null 100 1000 Null Null Null 200 2000 A002 Null Null 200 2000 Null Null Null 300 1000 A001 30 03 300 3000 Null Null Null 下記のような結果が欲しいです。 結果(☆) A_NO DAT_NO B_NO C_NO D_NO LEN DIV 0001 1 100 1000 Null 10 01 0001 2 Null Null A001 Null Null 0001 3 200 2000 Null Null Null 0001 4 200 2000 A002 Null Null 0001 5 300 3000 A003 30 03 元々はテーブルAとテーブルBを、テーブルAのB_NOとC_NOとテーブルBのB_NOとC_NOを条件に結合(LEFTJOIN)していました。 しかしテーブルAのB_NOとC_NOがNULLの場合でも、データ抽出する為に上記の方法では駄目でした。 どのようにすれば思い通りの結果を取得できますか? とても困っていますので、よろしくお願いいたします。

  • アクセスで複数のテーブルを結合したい

    アクセスで,2つのテーブルを一つに結合するにはどうしたらいいでしょうか。 ちなみに,2つのテーブルはこんな感じです。 テーブル1       テーブル2  A B C D E   A S B F C D   1 3 4 8 9   5 8 8 9 7 8  

  • 複数外部結合について

    A, B, C というテーブルがあります。 Aはkey1, key2, key3, key4, key5 を持ち、 Bはkey1, key2, Cはkey3, key4, key5 を持っています。 A--- key1 key2 key3 key4 key5 001 002 001 002 003 B--- key1 key2 001 002 C--- key3 key4 key5 001 002 003 A, B, C を以下のように外部結合すれば値は取得できますが、 A.key1 = B.key1 (+) A.key2 = B.key2 (+) A.key3 = C.key3 (+) A.key4 = C.key4 (+) A.key5 = C.key5 (+) B.key1 B.key2 C.key1 C.key2 C.key3 001 002 null null null null null 001 002 003 ここに key1, key2 を持つDというテーブルを以下の様に 外部結合しても、値を持ってくることができません。 D--- key1 key2 001 002 A.key1 = B.key1 (+) A.key2 = B.key2 (+) A.key3 = C.key3 (+) A.key4 = C.key4 (+) A.key5 = C.key5 (+) B.key1 = D.key1 (+) B.key2 = D.key2 (+) B.key1 B.key2 C.key1 C.key2 C.key3 D.key1 D.key2 001 002 null null null null null null null 001 002 003 null null これってなんででしょうか? よろしくお願いします.

  • 固定値を含む結合と複数テーブルの結合について

    「1.固定値を含む結合」と「2.複数テーブルの結合」について教えて下さい。 最近oracleを使い始めてSQLで表の結合を書く場面があるんですが LEFT(RIGHT) JOIN を使うのか、(+)を使って書くのかで迷っています。 LEFT(RIGHT) JOINだと固定値を含めて外部結合しようとするとエラーになってしまいます。 それが嫌で(+)を使っていたんですが 今度は複数のテーブルを(+)で結合しようとするとエラーになってしまいます。 (AテーブルとBテーブル、AテーブルとCテーブルなど?) こういう場合はどうすれば良いのでしょうか? とりあえず副参照をFROMに指定して対処してるんですが 何かきちんとした書き方があるのでしょうか?誰か教えて下さい。