sql - вернуть по одной строке из каждой группы - PullRequest
0 голосов
/ 18 декабря 2010

Учитывая приведенные ниже таблицы, каков наилучший способ вернуть только членство в команде и связанного с ней игрока, но только по одному игроку от каждой команды? Важно отметить, что выбор должен основываться на заданном наборе идентификаторов игроков. Это отправная точка.

Используя приведенный ниже пример, у меня были бы идентификаторы игроков: 1,2,3 (среди прочих), и в итоге мне нужно получить уникальное членство из списка идентификаторов пользователей (в данном случае 1,2,3). ). Я хотел бы закончить с team_memberships с идентификатором 1 & 2

Спасибо!

player
id | name
1  | bob
2  | joe
3  | tom

team_memberships
id | team_id | player_id
1  | 1       | 1
2  | 2       | 2
3  | 1       | 3

team
id | name
1  | jets
2  | kings

1 Ответ

1 голос
/ 18 декабря 2010

Вы имеете в виду

Select team_id, Min(player_id)<br> From team_Memberships<br> Where player_id In (1,2,3)<br> Group By team_id

Если выбранный игрок должен основываться на каком-либо другом атрибуте в таблице игроков, то:

Select team_id, 
   (Select Min(player_id) -- in case more than one player satisfies criterion
    From players 
    where playerId = m.Player_Id
       And [Some other ctiterion]) playerId
From team_Memberships m
Where player_id In (1,2,3)  
Group By team_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...