Проблема не в CTE, а в простой синтаксической ошибке:
SELECT *
FROM a
JOIN b
-- something missing here
Здесь JOIN
по умолчанию - INNER JOIN
, что требует некоторого условия, для которого должны быть объединены строки - как правило, как ON a.key = b.key
или USING key
. То же самое можно сказать о LEFT OUTER JOIN
или RIGHT OUTER JOIN
.
Если вам нужны все возможные комбинации (редкие, но иногда полезные), вы должны использовать CROSS JOIN
:
SELECT *
FROM a
CROSS JOIN b;
Или аналогичный оператор запятой:
SELECT *
FROM a, b;