SELECT (SELECT SUM(table1.col1) FROM table1) AS sum_1,
(SELECT SUM(table2.col1) FROM table2) AS sum_2;
Du kan også skrive det som:
SELECT t1.sum_c1, t1.sum_c2, t2.sum_t2_c1
FROM
(
SELECT SUM(col1) sum_c1,
SUM(col2) sum_c2
FROM table1
) t1
FULL OUTER JOIN
(
SELECT SUM(col1) sum_t2_c1
FROM table2
) t2 ON 1=1;
FULL JOIN bruges med en dud-betingelse, således at begge underforespørgsler ikke kunne give resultater (tomme) uden at forårsage, at den større forespørgsel ikke gav noget resultat.
Jeg tror ikke, at forespørgslen, som du har skrevet, ville have produceret det resultat, du forventede at få, fordi den laver en CROSS JOIN mellem tabel1 og tabel2, som ville puste hver SUM op med antallet af rækker i den anden tabel. Bemærk, at hvis enten tabel1/tabel2 er tom, vil CROSS JOIN få X rækker gange 0 rækker til at returnere et tomt resultat.
Se på denne SQL-violinator og sammenlign resultaterne.