Giunzione trasversale

Un cross join restituisce tutte le possibili combinazioni di righe di due tabelle (chiamato anche prodotto cartesiano).

Tutte le colonne di una tabella sono seguite da tutte le colonne dell'altra tabella. L'insieme dei risultati di solito non ha senso come in questo caso. È necessario aggiungere condizioni per definire ulteriormente ciò che si desidera ottenere dalle informazioni incrociate.

Con un join incrociato, il numero di righe della tabella risultante è uguale al numero di righe della prima tabella moltiplicato per il numero di righe della seconda tabella (in questo caso, nove).

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)
L'uso di un join incrociato equivale a specificare una selezione da entrambe le tabelle:
SELECT * FROM cows_one, cows_two;