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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

1回答

1496閲覧

php abdbに関して

Choqpp3

総合スコア19

MySQL

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2017/05/18 05:25

Test test1 test2この三つのテーブルをleft joinさせる形で結合させたいのですがどうしたら行けますか?

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

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

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

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

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

nora_kuragen

2017/05/18 05:31

各テーブルのカラムにはそれぞれ1対1もしくは1対多で結合する項目があるのでしょうか。まずはその関係を記述お願いします。
Choqpp3

2017/05/18 05:54

1対多数です
nora_kuragen

2017/05/18 06:03

どのテーブルが1で、どのテーブルが多になりますか?
Choqpp3

2017/05/18 06:05

testが多数でその他が1です
nora_kuragen

2017/05/18 06:05

また、Test -∈ test1とTest -∈ test2と独立した関係なのか、Test -∈ test1 -∈ test2 とつながりが生じるのかもお願いします。
Choqpp3

2017/05/18 06:07

test2が独立した形です
guest

回答1

0

ベストアンサー

おそらくデータベース初学者の方とお見受けして、サンプルで示しながら説明しますね。

Test

社員番号名前出身地部署
5234山田 太郎13S001
5235鈴木 良子27S001
5236田中 一郎23S002
5237高橋 裕子13S006

test1

コード都道府県
01北海道
02青森県
03岩手県

test2

コード部署
S001営業部
S002企画部
S003製造部
S004法務部

としましょう。
これで、おっしゃるような多対一の関係が、Testとtest1、Testとtest2で独立してできています。

これを、表示させるときは下記のようにしたい。

社員番号名前出身地部署
5234山田 太郎東京都営業部
5235鈴木 良子大阪府営業部
5236田中 一郎愛知県企画部
5237高橋 裕子東京都経理部

Testとtest1だけ(あるいはTestとtest2だけ)なら下記のように記述します。

MySQL

1SELECT Test.社員番号,Test.名前,test1.都道府県 2FROM Test 3LEFT JOIN test1 4ON Test.出身地 = test1.コード

FROMの後ろに置かれた方のテーブルが優先テーブルとなり、
LEFT JOINの後ろに書かれたテーブルの内容のうち、
優先テーブルにない項目は表示されません。

test2も結合させたいので、上記のFROM句の中身を()でくくり、
LEFT JOINをもう一度繰り返します。

MySQL

1SELECT Test.社員番号,Test.名前,test1.都道府県,test2.部署 2FROM (Test 3LEFT JOIN test1 4ON Test.出身地 = test1.コード) 5LEFT JOIN test2 6ON Test.部署 = test2.コード

これで複数のLEFT JOINを並列にしたSELECT文ができあがります。

投稿2017/05/18 06:37

編集2017/05/18 07:48
nora_kuragen

総合スコア101

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

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

rjunakc

2017/05/18 07:10 編集

> Testとtest1だけ(あるいはTestとtest2だけ)なら下記のように記述します。 SELECT句の「,Test.部署」は不要ですね。あと「ON Test.都道府県 = test1.コード」→「ON Test.出身地 = test1.コード」になりそうです。 test1テーブルには13や27のコードのデータが上記では見えないので、質問者さんはその辺を考慮してください。 > test2も結合させたいので、上記のFROM句の中身を()でくくり、 > LEFT JOINをもう一度繰り返します。 同じくSELECT句の「,Test.部署」→「,test2.部署」にしないと、部署コードしか表示されませんね。 丁寧に説明されているので、この回答で恐らくOKでしょう。
nora_kuragen

2017/05/18 07:47

Oh…初歩的なミスでした、ご指摘ありがとうございます。直しました…
Choqpp3

2017/05/18 07:49

とてもわかりやすく参考になりました ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問