Допустим, у меня есть две таблицы, которые выглядят следующим образом:
Games:
| AwayTeam | HomeTeam | AwayPoints | HomePoints |
------------------------------------------------------
| Aardvarks | Bobcats | 2 | 1 |
| Bobcats | Caterpillars | 20 | 10 |
| Aardvarks | Caterpillars | 200 | 100 |
Teams:
| Name |
----------------
| Aardvarks |
| Bobcats |
| Caterpillars |
Как я могу получить результат, который выглядит следующим образом?
| Name | TotalPoints |
------------------------------
| Aardvarks | 202 |
| Bobcats | 21 |
| Caterpillars | 110 |
Я думаю, что моя настоящая проблема заключается в том, как объединить операторы в SQL.Эти два оператора хорошо работают по отдельности:
SELECT SUM ( AwayPoints )
FROM Games
WHERE AwayTeam='Bobcats';
SELECT SUM ( HomePoints )
FROM Games
WHERE HomeTeam='Bobcats';
Я подозреваю, что мне нужен составной оператор , если я хочу соединить два SELECT оператора вместе.Затем передайте это утверждение в обобщенное выражение, приведенное ниже:
SELECT Name, SUM( aggregate_expression )
AS 'TotalPoints'
FROM Teams
GROUP BY Name;
Если бы мне пришлось просто сложить все это вместе, я бы подумал, что получится что-то вроде этого:
SELECT Name, SUM (
SELECT SUM ( AwayPoints )
FROM Games
WHERE AwayTeam=Name
UNION
SELECT SUM ( HomePoints )
FROM Games
WHERE HomeTeam=Name
)
AS 'TotalPoints'
FROM Teams
GROUP BY Name;
Однако это не работает, потому что SELECT SUM ( SELECT ...
полностью недействительно