Ein Cross-Join gibt alle möglichen Zeilenkombinationen aus zwei Tabellen zurück (wird auch als kartesisches Produkt bezeichnet).
Auf alle Spalten aus einer Tabelle folgen alle Spalten aus der anderen Tabelle. Normalerweise ergibt sich daraus kein sinnvolles Ergebnisset, wie auch im vorliegenden Fall. Sie müssen Bedingungen hinzufügen, um weitergehend zu definieren, welche Daten aus den Cross-Join-Informationen abgerufen werden sollen.
Bei einem Cross-Join entspricht die Anzahl Zeilen in der Ergebnistabelle der Anzahl Zeilen in der ersten Tabelle multipliziert mit der Anzahl Zeilen in der zweiten Tabelle (neun im vorliegenden Fall).
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 * FROM cows_one, cows_two;