質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1883閲覧

MYSQLで3つのテーブルを結合する方法

creative_09

総合スコア80

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/06/01 15:12

編集2020/06/01 15:14

laravelでDBテーブル3つを結合したいのですが、うまく行かず、
laravelではなくても、SQL文で構いませんのでよろしくお願い致します

3つのテーブルそれぞれに共通のカラムordernumカラムとuser_idカラムがあります
これをuser_idが2のユーザーのオーダーをすべて結合したいです

Aテーブルには

id, ordernum, user_id, name 1, 1234, 2, yamamoto 2, 1234, 2, suzuki 3, 2468, 1, tanaka 4, 5678, 2, takeda

Bテーブルには

id, ordernum, user_id, size 1, 1234, 2, 160 2, 1234, 2, 140 3, 5678, 2, 120

Cテーブルには

id, num, user_id, price 1, 9999, 2, 1000 2, 5678, 2, 500 3, 4343, 1, 300

以下のようにしましたが、
結果に9999のオーダーが取得できないので
よろしくおねがいします

SELECT * FROM a INNER JOIN b ON a.user_id = b.user_id INNER JOIN c ON a.user_id = c.user_id

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ちょっと質問の意図がわかりませんが普通にusre_id=2ならnum=9999は
ヒットしますね

  • 元データ

SQL

1create table tbl_a( 2id int, ordernum int , user_id int, name varchar(10)); 3insert into tbl_a values 4(1,1234,2,'yamamoto'), 5(2,1234,2,'suzuki'), 6(3,2468,1,'tanaka'), 7(4,5678,2,'takeda'); 8 9create table tbl_b( 10id int, ordernum int , user_id int, size int); 11insert into tbl_b values 12(1,1234,2,160), 13(2,1234,2,140), 14(3,5678,2,120); 15 16create table tbl_c( 17id int,num int , user_id int,price int); 18insert into tbl_c values 19(1,9999,2,1000), 20(2,5678,2,500), 21(3,4343,1,300);
  • 検索

SQL

1SELECT * 2FROM tbl_a 3INNER JOIN tbl_b 4using(user_id) 5INNER JOIN tbl_c 6using(user_id) 7where user_id=2

投稿2020/06/01 15:52

yambejp

総合スコア114968

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

creative_09

2020/06/01 16:21

SQL文までありがとうございます。 ヒットしました。 左側だけを見てヒットしていないと勘違していたのかも知れません。。。 やってみた結果、欲しいデータがこれでもなかったようでどうすればよいのかわからなくなってしまいました。 user_idが2のオーダーをオーダーnumごとにループで表示させることが最終の目標なのですが。。。 考え方がわかりません。。。
yambejp

2020/06/02 01:07

どういう結果が欲しいのか例示がなかったので 現在の情報で答えられるのはこんなものです あとは質問の仕方をもう少し工夫なさると良いでしょう
creative_09

2020/06/02 01:52

ありがとうございます。 どのような説明や質問が正しいのか、そこですでに悩んでしまっているので、そこも問題ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問