MySQL で 3 つのテーブルを使用して FULL OUTER JOIN 操作を実行するにはどうすればよいですか?
P粉852114752
2023-09-01 21:48:57
<p>次の表を考えてみましょう。</p>
<pre class="lang-sql prettyprint-override"><code>テーブル `t1` を作成 (
「日付」日付、
`値` int
);
テーブル`t2`を作成します(
「日付」日付、
`値` int
);
テーブル`t3`を作成します(
「日付」日付、
`値` int
);
`t1` に挿入 (`日付`、`値`)
値 ("2022-01-01", 1)、
(「2022-03-01」、3)、
(「2022-04-01」、4);
`t2` に挿入 (`日付`、`値`)
値 ("2022-01-01", 1)、
(「2022-02-01」、2)、
(「2022-04-01」、4);
`t3` に挿入 (`日付`、`値`)
値 ("2022-01-01", 1)、
(「2022-02-01」、2)、
(「2022-03-01」、3);
</code></pre>
<p><code>t1</code>テーブルがありません<code>2022-02-01</code>日付、<code>t2</code>がありません<code>2022-03-01< ; /code>、t3
がありません 2022-04-01
。これら 3 つのテーブルを結合して、次の結果を生成したいと考えています。 </p>
<pre class="brush:php;toolbar:false;">| t1.date | t1.value | t2.date | t2.value | t3.date | t3.value |
| | | | | | |
| 2022-01-01 | 1 | 2022-01-01 | 1 | 2022-01-01 | 1 |
| null | null | 2022-02-01 | 2 | 2022-02-01 | 2 |
| 2022-03-01 | 3 | null | null | 2022-03-01 | 3 |
| 2022-04-01 | 4 | 2022-04-01 | 4 | null | null |</pre>
<p>2 つのテーブル間で <code>完全外部結合</code> を行う方法は知っていますが、3 つ以上のテーブル間ではさらに複雑になります。次のようなクエリを試しましたが、期待した結果が得られませんでした: </p>
<pre class="lang-sql prettyprint-override"><code>select *
「t1」から
left join `t2` on `t2`.`date` = `t1`.`date`
left join `t3` on `t3`.`date` = `t2`.`date` または `t3`.`date` = `t1`.`date`
連合
選択する *
「t1」から
右結合 `t2` on `t2`.`date` = `t1`.`date`
右結合 `t3` on `t3`.`date` = `t2`.`date` または `t3`.`date` = `t1`.`date`;
</code></pre></p>
正しい方向に進んでいますが、3 つのテーブルと 4 つの共用体節など、すべての組み合わせを考慮する必要があります。
リーリー