• ベストアンサー

3つ以上のテーブルを結合できるか?

初歩的な質問で申し訳ありません。 タイトル通りなのですが、MySQLで、同時に3つ以上のテーブルを結合することは可能でしょうか? また、可能な場合はどのような命令を出せばいいのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

select * from table1 inner join table2 on table1.id = table2.id inner join table3 on table1.id = table3.id; とかで確かいける・・・と思います。

miraikako
質問者

お礼

返信滅茶苦茶遅れてすいません。 回答くださった方々ありがとうございました。 参考になりました。m(__)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

あなたの意味する「結合」があいまいすぎます 例えば、3つのテーブルのレコードを1つのテーブルにINSERT(コピー)したいのか 3つのテーブルに対してSELECT等でリレーション張りたいのか SELECT結果をINNER JOINとかUNIONとかで結合表示したいのか

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

微妙な質問ですが、結合というのは何をさしているのでしょうか? いわゆるINNER JOINなどはいくつでもつなげます。 (あまり極端につなげすぎると実働にたえないかもしれませんが) また単にデータをつなげて表示するならUNIONになります。 ただしUNIONはバージョンによってつかえません。 ご利用になりたいMySQLのバージョンと、具体的にどのようなことを なさりたいか書いたほうが適切な回答を得られると思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 3つ以上のテーブルを結合して絞り込むには?

    MySQL勉強中のものです。 初歩的な質問ですいませんが、 以下のような3つのテーブルがあります。 テーブルA(店名) A店 B店 C店 D店 テーブルB(販売品目) パソコン ビデオ 冷蔵庫 液晶テレビ デジカメ テーブルC(支払い方法) クレジットカード 銀行振り込み 代引き このデータから、テレビとビデオを販売していて かつクレジットカードに対応しているお店を検索したいと思うのですが、 どうもうまくいきません。 この場合、どのようにSQL文を組み立てればよいのでしょうか。 LEFT JOINで1つに結合すると、カラムごとにレコードが重複して GROUP BYでうまく絞り込めません。 そもそもテーブルの作り方を間違えているのでしょうか。 考え方のヒントだけでも結構ですのでよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • テーブル結合について(トランテーブル同士の結合)

    データベースの種別はなく、一般的な質問を書かせて頂きます。 データベースの勉強を、最近始めました。 初心者で一般的な質問なのですが、タイトルに書きましたとおり、 テーブル結合で、一般的には、マスターテーブルと実データテーブルを結合 するのが一般的かと思うのですが、 ”実データテーブルと実データテーブルを結合する”という場合は、どういった理由や、利用シーンで使うのでしょうか? 例などを知りたいと思い、質問を書かせていただきました。 抽象的でわかりずらい場合は、ご指摘ください。 どうぞ宜しくお願いいたします。

  • 3つ以上のテーブルの結合に関して

    いろいろな書籍を見ながら試してみましたが どうも求めている結果が得られませんでした… ヒントでも構いませんのでアドバイスお願いします。 テーブルの仕様 ■テーブル1■ 店舗コード 日付 フィールド1n フィールド2n フィールド3n フィールド4n ■テーブル2■ 店舗コード 日付 フィールド5 ■テーブル3■ 店舗コード 日付 フィールド6 2つのテーブルの内部結合や外部結合のSQL文は確認できましたが 3つ以上の記述がテキストにありませんでした。 ※もしかしたら2つのテーブルを結合してからかと思いましたが 具体的な方法が思い浮かびませんでした。 オラクルは9g SQL*PLUS ■その他の条件■ すべてのフィールドが例えNULLでも店舗コードと日付 は表示されるようにする。 INを使用して抽出したい店舗コードのみを表示させたい。 (その場合並び替え順を指定したい場合はINのあとで順番を指定すれば よろしいでしょうか?) フィールド1~4までの「n」は同じ種類のフィールドですが区分が10ずつ あり算術演算子で合計を求めた値のみを表示させます。 そのためASを使用してフィールド名を短くしたいと考えています。 店舗コードと日付は3つのテーブルに共通してありますが 結合した場合は1つづつの表示にしたいです。 大変申し訳ございませんが 宜しくお願いします。

  • テーブル結合

    度々お世話になっています。 Mysqlのテーブル結合したいと思ってます。 テーブル構成は以下のとおりですのでご参照ください。 ■テーブルA id | name 1 | bind 2 | samba 3 | apache ■テーブルB id | detail 3 | test 3 | test 1 | test ■結合結果 id | count 1 | 1 2 | 0 3 | 2 テーブルA,Bはidコラムで紐づいています。 この際、テーブルBのidごとにレコード数を出力したいのですが、 どういったSQLを流せば良いでしょうか。 ご教示願います。

    • ベストアンサー
    • MySQL
  • テーブルの集計+結合

    MySQL+ PHPについて質問です。 商品リスト(テーブルA)から、商品名で関連付けられたユーザー評価(テーブルB)があったとします。 ユーザーが商品ページから評価を5段階でを入れれるようにしました。 商品一覧のページで商品リスト(テーブルA)を表示させ さらにユーザー評価の平均を一緒にテーブルAの商品名から関連付けるように表示させたいのですが、どうやったらいいのでしょうか。 イメージは下記の通りです。 --------------------------------------------------------------- 商品名(テーブルA) ∥ 商品説明(テーブルA) ∥ 商品ランク(テーブルB) --------------------------------------------------------------- オレンジ | おいしい | 評価5 --------------------------------------------------------------- りんご | おいしい | 評価4 --------------------------------------------------------------- 試したSQL文は以下の通りです。 "SELECT title, avg(rank) as avgrank FROM テーブルB group by title join テーブルA テーブルA .title = テーブルB.title"; 残念ながらエラーなのですが、正しくはどう書くのでしょうか。 単純にユーザーが1人であればそのまま結合できるのですが、同じタイトルのものの評価を平均しないといけないため、頭がおかしくなりそうです。

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

    うまく動作しなくて、困っております。 MySQLを利用しており、その際のテーブルの結合で困っています。 table a +-+--+ |id|col| +-+--+ | 1|A| | 2|B| | 3|C| | 4|D| | 5|E| +-+--+ table b +-+--+ |id|col| +-+--+ | 2|G| | 5|G| | 6|G| +-+--+ 上記テーブルを結合し、下記のようにしたいのですが・・・。 +-+--+ |id|col| +-+--+ | 1|A| | 2|B| | 3|C| | 4|D| | 5|E| | 6|G| +-+--+ 参考書・Webから探してみましたが、 見つかりませんでした。 よろしくお願い致します。

  • 二つあるテーブルを結合させる方法について

    いつも勉強させて頂いております。 Doctrineを使って二つのテーブルを結合させ、配列に入れようとしているのですが、方法がわかりませんので、よろしければ教えて下さい。 また、mysql_queryを使う方法でもかまいません。 テーブルを次のようにします。 Table : Student id, name Table : Diary id, day これをIDを基に結合させるためには、どのように書けばいいでしょうか? 次のようにやってみたんですが、うまく行かず、何が悪いのかがわかりません。 $this->tmp = Doctrine_Query::create() ->select('s.id, d.id') ->from('Student s') ->leftJoin('s.id d'); $this->record = $this->tmp->fetchArray(); 一番最後の行をコメントアウトすると画面は表示されますので、一番下の行が悪さしているのだと思います。 初歩的な質問になると思いますが、よろしければ教えて下さい。よろしくお願いします。

    • 締切済み
    • PHP
  • 2つのテーブルの結合に関してです

    お世話になります PHP5,MySql5.0.33にて開発を行っています 2つのテーブルの結合部分で困っています TABLE1 ---------------------------------- ID DATE1 DATE2  COUNT ---------------------------------- 1  2/27  2/20  10 2  2/27  2/20  10 ---------------------------------- TABLE2 ---------------------------------- ID DATE1 DATE2 COUNT ---------------------------------- 1  2/21  2/26  5 2  2/21  2/27  5 ---------------------------------- 上記2つのテーブル(TABLE1/TABLE2)から TABLE1のDATE1=2/27より過去の行とTABLE2のDATE2=2/27より過去の行を 取得したいのですが上手くいかず…(下SQLで記述しています) SELECT DISTINCT TABLE1.* FROM TABLE1,TABLE2 WHERE TABLE1.ID=TABLE2.ID AND TABLE1.ID=1 AND (TABLE1.DATE1<='2009/2/27' OR TABLE2.DATE2<='2009/2/27') (結合のそもそもの理解が間違っているかも知れませんが…;) 宜しくお願いします

    • ベストアンサー
    • MySQL
  • テーブルの結合について

    野球のスコア表を付けようと考えています。 scoreというテーブルにスコアを、 teamというテーブルにチーム名(team_idとteam_name)を入れています。 scoreテーブルには一行でホームチームのidとスコア、ビジターチームのidとスコアを入れています。 そして、そのidとteamテーブルにあるidとを結合しています。 しかし、PHPで読み込む際に(おそらく行の先頭に近いからという理由で)ビジターチームだけを読み込んでしまい、たとえば「横浜対横浜」のような形になってしまいます。 PHPでもう一回ホームチームだけを読み込むようにプログラムすれば問題なく表示はできるのですが、効率が悪いように感じます。 そこで、一回でホームチームとビジターチームの両方を読み込む方法をご教示賜りたく質問させていただきました。 テーブルの構造が悪いと思うのでMySQLの方に投稿させていただきましたが、PHPで可能であればそちらでもかまいません。 よろしくお願いします。 Apache 1.3.34 PHP 4.3.11 MySQL 4.0.26

    • ベストアンサー
    • MySQL
  • 結合した結果を別テーブルにいれるには

    mysqlで、 結合した結果を別テーブルにいれるには、どうしたらよいでしょうか。 aと bを結合させて、 cへいれる。 inner join、と insert を組み合わせるような気がするのですが、よくわかりません。

このQ&Aのポイント
  • Windows10 Lenovo ideapad 330を使用している場合、ExcelでCTRL+SHIFT+Lが使えません。このショートカットキーはフィルタのON/OFFを切り替えるためのものですが、パソコン上で「パフォーマンスロギングが開始されました」と表示され、フィルタが機能しないため困っています。この問題はAMD Softwareのキーの割り当てによるものと考えられます。対処方法は、AMD Softwareを削除するか、キーの割り当てを変更することです。どちらの場合も、CTRL+SHIFT+Lを再度Excelで使用することができるようになります。
  • Windows10 Lenovo ideapad 330を使っていて、ExcelでCTRL+SHIFT+Lが機能しない場合の対処方法を教えてください。このショートカットキーはフィルタのON/OFFを切り替えるためのものですが、パソコン上で「パフォーマンスロギングが開始されました」と表示され、フィルタが正常に動作しません。この問題はAMD Softwareのキーの割り当てが影響していると考えられます。解決策としては、AMD Softwareを削除するか、キーの割り当てを変更することです。両方の方法で、CTRL+SHIFT+Lを再びExcelで使うことができます。
  • Windows10 Lenovo ideapad 330を使用している場合、ExcelでCTRL+SHIFT+Lが使えない問題が発生します。このショートカットキーはフィルタのON/OFFを切り替えるために使用されますが、パソコン上で「パフォーマンスロギングが開始されました」と表示され、正常にフィルタが動作しません。この問題はAMD Softwareのキーの割り当てによるものです。解決策としては、AMD Softwareをアンインストールするか、キーの割り当てを変更することが考えられます。いずれの方法でも、CTRL+SHIFT+Lを再びExcelで使うことができます。
回答を見る