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

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

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

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

MySQL

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

Q&A

0回答

299閲覧

複数テーブルを結合する際に無駄な繰り返しを避けたい

dedede914

総合スコア62

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

MySQL

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

0グッド

0クリップ

投稿2022/11/03 03:25

編集2022/11/03 20:22

前提

3つのテーブルをid=1 を条件にして結合させたいです。valueの格納庫数が最も多いものに合わせたいです

SQL

1CREATE TABLE `example`.`tablea` ( 2 `id` INT NOT NULL, 3 `avalue` VARCHAR(45) NOT NULL, 4 PRIMARY KEY (`id`)); 5 6CREATE TABLE `example`.`tableb` ( 7 `id` INT NOT NULL, 8 `bvalue` VARCHAR(45) NOT NULL, 9 PRIMARY KEY (`id`)); 10 11CREATE TABLE `example`.`tablec` ( 12 `id` INT NOT NULL, 13 `bvalue` VARCHAR(45) NOT NULL, 14 PRIMARY KEY (`id`)); 15 16INSERT INTO `example`.`tablea` (`id`, `avalue`) VALUES ('1', 'a'); 17INSERT INTO `example`.`tableb` (`id`, `bvalue`) VALUES ('1', 'b'); 18INSERT INTO `example`.`tableb` (`id`, `bvalue`) VALUES ('2', 'bb'); 19INSERT INTO `example`.`tablec` (`id`, `cvalue`) VALUES ('1', 'c'); 20INSERT INTO `example`.`tablec` (`id`, `cvalue`) VALUES ('1', 'cc'); 21INSERT INTO `example`.`tablec` (`id`, `cvalue`) VALUES ('1', 'ccc');

table A

idavalue
1a

table B

idbvalue
1b
1bbb

table C

idcvalue
1c
1cc
1ccc

実現したいこと

結合結果が理想はresult2になってほしいですが
result1のようになってもでも大丈夫です
valueの格納庫数が最も多いものに合わせたいです

table result1

idavaluebvaluecvalue
1abc
1abbcc
1abccc

table result2

idavaluebvaluecvalue
1abc
 bbcc
  ccc

発生している問題・エラーメッセージ

3行で納めたいんですが、BとCの3x2=6行で表示されてしまいます
どういう方法があるでしょうか
full outer join とか いろいろ組み合わせてみてやってはみたんですが、
いまいちよくわかっておらず、うまくできません
よろしくお願いします。

該当のソースコード

SQL

1SELECT * FROM tableA 2 join tableB on tableA.id=tableB.id 3 join tableC on tableA.id=tableC.id 4 where tablea.id =1 ;

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

Orlofsky

2022/11/03 06:57

質問は修正できます。 この掲示板ではテーブル定義はCREATE TABLE文で、データはINSERT文で提示するとSQLを実行し易くなるので動作確認してくれる人が増えるのでは?
Orlofsky

2022/11/03 07:00 編集

where id =1 ; ↓ where ableA.itd =1 ; って修正しないとどのテーブルのidかわからないからエラーになりませんか?
yambejp

2022/11/04 05:34

サンプルがおかしいので、質問がぶれます (1)1 bbb→2 bbbで間違いないですね? (2)CREATE TABLE `tablec`の `bvalue` VARCHAR(45)は`cvalue` VARCHAR(45) で間違いないですね? (3)INSERT INTO `tablec`のidの値がみな1担っていますが1,2,3とインクリメントすることで間違いないですか?primarykeyなので同じものは指定できません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問