SELECT (SELECT SUM(table1.col1) FROM table1) AS sum_1,
(SELECT SUM(table2.col1) FROM table2) AS sum_2;
Du kan också skriva 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 används med ett dud-villkor så att endera underfrågan inte kunde ge några resultat (tom) utan att orsaka att den större frågan inte ger något resultat.
Jag tror inte att frågan som du har skrivit skulle ha gett det resultat du förväntade dig att få, eftersom den gör en CROSS JOIN mellan tabell1 och tabell2, vilket skulle blåsa upp varje SUMMA med antalet rader i den andra tabellen. Observera att om någon av tabell1/tabell2 är tom, kommer CROSS JOIN att göra att X rader gånger 0 rader returnerar ett tomt resultat.
Titta på denna SQL-fiol och jämför resultaten.