I want to perform a cartesian product between two SELECT statements as
SELECT 1, 2 INNER JOIN SELECT 3, 4 ;
I expect the result to be every combination of (1,2) with (3,4), like:
1 3
2 3
1 4
2 4
If you specify your tables with out any JOIN ON
clause or equalities/conditionins in the WHERE
clause you'll get the catesian product you're looking for.
SELECT table1.field1, table2.field2
FROM table1, table2
will give you what you're asking for. Showing it more explicitly...
SELECT * FROM table1;
+--------+
| field1 |
+--------+
| 1 |
| 2 |
+--------+
SELECT * FROM table2;
+--------+
| field2 |
+--------+
| 3 |
| 4 |
+--------+
SELECT table1.field1, table2.field2 FROM table1, table2;
+--------+--------+
| field1 | field2 |
+--------+--------+
| 1 | 3 |
| 2 | 3 |
| 1 | 4 |
| 2 | 4 |
+--------+--------+
You can use the CROSS JOIN clause
SELECT MyTable1.Col1, MyTable2.Col2
FROM MyTable1
CROSS JOIN MyTable2
where MyTable1 has two rows containing 1 and 2; and MyTable2 has two rows containing 3 and 4.
select v1, v2
from
(select 1 as v1 union
select 2) t1,
(select 3 as v2 union
select 4) t2
or even simpler:
select *
from
(select 1 union
select 2) t1,
(select 3 union
select 4) t2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With