#mysql #sql #postgresql
#mysql #sql #postgresql
Вопрос:
Итак, у меня есть следующие операторы SELECT:
SELECT COUNT(A.Award) AS US, SUBSTRING(CAST(M.Year as char(4)), 0 , 4) AS Decade
FROM Movies M, Awards A
WHERE {SOME WHERE CLAUSE}
GROUP BY Decade;
и
SELECT COUNT(*) AS Total, SUBSTRING(CAST(A2.Year as char(4)), 0 , 4) AS Decade
FROM Awards A2
WHERE {SOME WHERE CLAUSE}
GROUP BY Decade;
Первый «генерирует» таблицу со столбцами (US, Decade), а второй «генерирует» другую таблицу со столбцами (Всего, Декада). Я хочу объединить эти две таблицы, чтобы получить таблицу (США, общее количество, Десятилетие). Как я могу это сделать?
Ответ №1:
Поместите их в подзапросы и выполните JOIN
:
SELECT a.US, a.decade, b.total FROM
(SELECT COUNT(A.Award) AS US, SUBSTRING(CAST(M.Year as char(4)), 0 , 4) AS Decade
FROM Movies M, Awards A
WHERE {SOME WHERE CLAUSE}
GROUP BY Decade ) AS a
INNER JOIN
(SELECT COUNT(*) AS Total, SUBSTRING(CAST(A2.Year as char(4)), 0 , 4) AS Decade
FROM Awards A2
WHERE {SOME WHERE CLAUSE}
GROUP BY Decade) AS b
ON a.decade = b.decade