Ich habe 2 Tabellen mit den Namen Players
und Teams
. Es gibt ungefähr 100 Datenzeilen.So verwenden Sie eine innere Verknüpfung, um das gewünschte Ergebnis in SQL Server 2008 zu erhalten
Players
Spalten: player_id, Player_Name, Team_ID, country_id, Captain_ID, Matches_PlayedTeams
Spalten: Team_ID, TEAM_NAME, MANAGER_ID, Matches_Won, Matches_Lost, country_id
Players
Tabelle:
--------------------------------------------------------------------------
| Player_ID Player_Name Team_Id Country_ID Captain_ID Matches_Played|
--------------------------------------------------------------------------
| 1 Ronaldo 1 1 1 250 |
| 2 Messi 2 2 2 220 |
| 3 Marcelo 1 1 1 185 |
| 4 Suarez 2 2 2 193 |
--------------------------------------------------------------------------
Ich möchte den Spieler in jedem Team finden, der die meisten Spiele gespielt hat, mit einem INNER JOIN.
Wunschergebnis:
--------------------------------------------------------------------------
| Player_ID Player_Name Team_Id Country_ID Captain_ID Matches_Played|
--------------------------------------------------------------------------
| 1 Ronaldo 1 1 1 250 |
| 2 Messi 2 2 2 220 |
--------------------------------------------------------------------------
Die Abfrage ich versucht mit:
SELECT
p.Player_Name, t.Team_Name, src.Matches_Played AS Matches_Played
FROM
Players p
INNER JOIN
Teams t ON p.Team_ID = t.Team_ID
INNER JOIN
(SELECT Team_ID, MAX(Matches_Played) AS Matches_Played
FROM Players
GROUP BY Team_ID) src ON t.Team_ID = src.Team_ID
AND p.Team_ID = src.Team_ID;
Diese Abfrage liefert die gesamte Tabelle mit dem gleichen MAX
Wert von Matches_Played
neben jedem Spieler.
Wie würde ich meine Anfrage reparieren, um das gewünschte Ergebnis zu erhalten? Ich verstehe die grundlegende Struktur innerer Joins, aber bin verwirrt darüber, was in einem enthalten sein soll. Ich brauche dazu einen Rat.
Können Sie bitte einige Beispieldaten und das erwartete Ergebnis hinzufügen? – Arulkumar