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

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スクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

7777閲覧

複数のテーブルからフィールドの値を取得するには?

hiro0208

総合スコア75

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スクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/06/14 07:58

編集2017/06/15 04:50

テーブルが2つあり、
主キー member_id

になります。
[tableA]

member_id|name|age|
|:--|:--:|:|
|1|yamada|20||
|2|tanaka|30||

[tableB]

member_idsize
1large
2small

この2つのテーブルの
name,age,size
値をまとめて取得するSQLの記述は、どのように書けば良いでしょうか?

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

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

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

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

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

m.ts10806

2017/06/14 07:59

tableAとtableBの関係性はないのでしょうか?
workaholist

2017/06/14 08:01

tableAが2レコード、tableBが3レコードあったらどういう結果になればよいでしょうか。
sleepsheep

2017/06/14 13:42

直積結合がやりたいのでしょうか?
guest

回答2

0

ベストアンサー

「tableA、tableBを関連づける情報」は何かありませんか(主キーもわかると望ましい)?
これが無いと多分だれも回答できない。
一つの回答としてはテーブルを結合して取得するSQLになると思いますが、それにはtableA、tableBを関連付ける項目が必要です。
例えば
tableA
|member_id|name|age|size_id|
|:--|:--:|--:|
|1|yamada|20|100|
|2|suzuki|30|100|
|3|sato|35|200|

tableB

size_idsize
100large
200small

なら
SELECT a.name,a.age,b.size FROM tableA a INNER JOIN tableB b ON a.size_id=b.size_id;
(inner joinで良いかどうかは要件によりますが)
そもそもですが、"tableA、tableBを関連づける情報"(この例だとsize_id)が無い場合、可能な結合は交差結合(cross join)のみになります(技術的というより論理的な話)。
この場合以下のような結果になります(多分ほしいのはこれじゃないでしょう)。

nameagesize
yamada20large
suzuki30large
sato35large
yamada20small
suzuki30small
sato35small

投稿2017/06/15 01:46

kurokoba

総合スコア276

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

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

kurokoba

2017/06/15 05:40

tableA,tableBともにmember_idについて一意(ダブりがない※1)という前提で進めますと、 1.tableAにデータがあれば対応するtableBのデータは必ずある。またはどちらか一方に対応するデータが無ければ抽出しない。 SELECT a.name,a.age,b.size FROM tableA a INNER JOIN tableB b ON a.member_id=b.member_id; 2.tableAのデータは全て抽出する(tableBに対応するデータが無ければsizeはnull) SELECT a.name,a.age,b.size FROM tableA a LFFT JOIN tableB b ON a.member_id=b.member_id; 3.tableBのデータは全て抽出する(tableAに対応するデータが無ければname、ageはnull) SELECT a.name,a.age,b.size FROM tableB b LFFT JOIN tableA a ON a.member_id=b.member_id; テーブルの内部結合・外部結合については検索すればいろいろでてきますが http://qiita.com/Yinaura/items/3ab6fc49ae55f52e2d55 ※1 テーブル定義上ダブらない(主キー、UNIQUE制約等)or仕様上ダブらないことが保証されている等。 member_idで一意でないとするとまた話が変わってきます。別に難しくはありませんが(集計関数やサブクエリ等を組み合わせれば標準のSQLで可能)。 ※2 標準のSQLしか使って無いので大概のDB製品については大丈夫だと思いますが特殊なものを使っているようでしたら別途相談。 ※3 性能のことは考えていません。
guest

0

tableAとtableBのmember_idがそれぞれユニークで、しかも1対1で常に併存する
(若しくはある程度高い確率で出現する)として、member_idをキーに結合するなら
この正規化は無駄なので1テーブルで管理したほうが良いと思います。

ちなみにageのような時間に依存するデータは正確な集計ができなくなるので
あまりお勧めできません

投稿2017/06/15 05:13

yambejp

総合スコア114784

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問