前提
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
| id | avalue |
|---|---|
| 1 | a |
table B
| id | bvalue |
|---|---|
| 1 | b |
| 1 | bbb |
table C
| id | cvalue |
|---|---|
| 1 | c |
| 1 | cc |
| 1 | ccc |
実現したいこと
結合結果が理想はresult2になってほしいですが
result1のようになってもでも大丈夫です
valueの格納庫数が最も多いものに合わせたいです
table result1
| id | avalue | bvalue | cvalue |
|---|---|---|---|
| 1 | a | b | c |
| 1 | a | bb | cc |
| 1 | a | b | ccc |
table result2
| id | avalue | bvalue | cvalue |
|---|---|---|---|
| 1 | a | b | c |
| bb | cc | ||
| 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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
質問は修正できます。
この掲示板ではテーブル定義はCREATE TABLE文で、データはINSERT文で提示するとSQLを実行し易くなるので動作確認してくれる人が増えるのでは?
where id =1 ;
↓
where ableA.itd =1 ;
って修正しないとどのテーブルのidかわからないからエラーになりませんか?
サンプルがおかしいので、質問がぶれます
(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なので同じものは指定できません
あなたの回答
tips
プレビュー