前提
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー