Cross join

A cross join returns all possible combinations of rows of two tables (also called a Cartesian product).

All of the columns from one table are followed by all of the columns from the other table. The result set usually does not make sense as in this case. You must add conditions to further define what you want to obtain from the cross joined information.

With a cross join, the number of rows in the resultant table is equal to the number of rows in the first table times the number of rows in the second table (in this case, nine).

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)
Using a cross join is equivalent to specifying a select from both tables:
SELECT * FROM cows_one, cows_two;