クロス結合
クロス結合は、2 つの表に含まれる行のすべての組み合わせを返します (デカルト積とも呼ばれます)。
1 つの表のすべての列の後ろに、もう 1 つの表のすべての列が付けられます。 この結果セットは、通常、この例のように意味がありません。 条件付けを行い、クロス結合された情報から何を導き出したいのかをさらに定義する必要があります。
クロス結合では、結果として作られる表の行数は、1 つ目の表の行数と 2 つ目の表の行数の積となります (この場合は 9)。
SELECT * FROM cows_one CROSS JOIN cows_two;
cnumber|cbreed |cnumber| breeds
-------+----------+-------+-------
1 | Holstein | 2 | Jersey
1 | Holstein | 3 | Brown Swiss
1 | Holstein | 4 | Ayrshire
2 | Guernsey | 2 | Jersey
2 | Guernsey | 3 | Brown Swiss
2 | Guernsey | 4 | Ayrshire
3 | Angus | 2 | Jersey
3 | Angus | 3 | Brown Swiss
3 | Angus | 4 | Ayrshire
(9 rows)
クロス結合の使用は、両方の表からの select を次のように指定することと同等です。
SELECT * FROM cows_one, cows_two;