Ниже представлен запрос, который работает точно так, как должен, и получает результаты, которые я хочу.SQL Query для выбора отрицательных значений
Есть ли лучший способ написать это? Вопрос гласит: «Печать всех teamIDs, где команда играла против Филлис, но не против Смельчаки» и двух таблиц устанавливаются следующим образом:
Игры: GameID, homeTeamID, guestTeamID, дата
команды: teamID, teamName, home, leagueName
homeTeamID и guestTeamID являются внешними ключами для таблицы команд, gameID и teamID являются первичными ключами. В настоящее время используется SQL-сервер диалект.
Мне действительно кажется, что я написал это нелепо, и должно быть что-то более короткое, я могу сделать то, о чем я не знаю.
WITH philliesgames AS
(
SELECT g.*
FROM games g
JOIN teams t
ON g.hometeamid = t.teamid
OR g.guestteamid = t.teamid
WHERE t.teamname = 'Phillies'), bravesgames AS
(
SELECT g.*
FROM games g
JOIN teams t
ON g.hometeamid = t.teamid
OR g.guestteamid = t.teamid
WHERE t.teamname = 'Braves')
(
SELECT guestteamid
FROM philliesgames
WHERE guestteamid <> 1
UNION
SELECT hometeamid
FROM philliesgames
WHERE hometeamid <> 1)
EXCEPT
(
SELECT guestteamid
FROM bravesgames
UNION
SELECT hometeamid
FROM bravesgames)
Awesome! Спасибо, есть несколько вещей, которые я могу извлечь из этого. – ajthyng