У меня есть таблица статистики защитника. Каждая строка в таблице представляет одну производительность QB в одной игре. Уникальный идентификатор для каждой строки называется gameId и состоит из ID игрока и даты игры.SQL select с одним пунктом, подчиненным другому
Что я хочу сделать, это использовать оператор select для создания списка всех уникальных защитников в таблице, которые выбрали хотя бы одно завершение.
Я пытаюсь сделать это с этим утверждением:
SELECT * FROM swdata
WHERE gameComp > 0 AND gameId IN (
SELECT MAX(gameId) FROM swdata GROUP BY playerId)
ORDER BY playerLastName
Первый пункт является gameComp> 0, а второе условие состоит в веять список до уникальных защитников.
Я хочу, чтобы это было первое задание, которое должно выполняться, а затем для второго предложения, которое будет выполняться по результатам первого предложения.
Но на самом деле происходит то, что они запускаются одновременно, и это приводит к тому, что некоторые игроки опускаются из результатов.
Итак, я знаю, что я неправильно это сделал. Может ли кто-нибудь помочь мне исправить это?
Ваш запрос ищет игроков, которые бросили хотя бы одно завершение в своей последней игре. –
Точно. Итак, как я могу структурировать его, чтобы выбрать уникальных защитников, которые выбрали хотя бы одно завершение? – Kirkman14
Как предложил Гордон Линофф. Если у вас есть имя игрока в таблице SWdata, ваши данные плохо нормализованы. Имя игрока должно быть в таблице, которая определяет идентификатор игрока; таблица swdata должна содержать только идентификатор игрока. 'SELECT DISTINCT a, b, c FROM Wherever' означает, что будут выбраны только уникальные комбинации' a, b, c'; DISTINCT применяется ко всем столбцам в списке выбора, а не только к ведущему столбцу. –