SELECT (SELECT SUM(table1.col1) FROM table1) AS sum_1,
(SELECT SUM(table2.col1) FROM table2) AS sum_2;
Můžete to také napsat jako:
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 se používá s podmínkou dud, takže žádný poddotaz nemůže přinést žádné výsledky (prázdný), aniž by to způsobilo, že větší dotaz nebude mít žádný výsledek.
Nemyslím si, že by dotaz, jak jste napsal, přinesl výsledek, který jste očekávali, protože provádí CROSS JOIN mezi tabulkami1 a tabulkou2, což by zvýšilo každý SUM o počet řádků v druhé tabulce. Všimněte si, že pokud je buď tabulka1/tabulka2 prázdná, CROSS JOIN způsobí, že X řádků o 0 řádků vrátí prázdný výsledek.
Podívejte se na tento SQL Fiddle a porovnejte výsledky.