Witam,
Muszę wyjąć z bazy dane.
Mam dwie tabele - Klub i Piłkarz. Zakładamy, że piłkarz może grać w wielu klubach
Klub ma dwa atrybuty (Id, Nazwa), a Piłkarz trzy (IdPiłkarza, IdKlubu, Nazwisko).
Chciałbym osiągnąć raport w którym są zawarte wszystkie kluby oraz Nazwisko piłkarza, jeśli gra w danym klubie lub null jeśli nie gra w danym klubie.
SELECT dbo.Klub.Id AS IdKlubu, dbo.Pilkarz.Nazwisko AS Nazwisko
FROM dbo.Klub LEFT OUTER JOIN
dbo.Pilkarz ON dbo.Klub.Id = dbo.Pilkarz.IdKlubu
WHERE (dbo.Pilkarz.Id = 20)
Czyli w raporcie mają znaleźć się wszystkie KlubId jakie istnieją, i jeśli w danym klubie gra piłkarz o Id=20, to ma być w kolumnie "Nazwisko" nazwisko tego piłkarza, a jeśli nie gra, to w "Nazwisko" ma być null.
Niestety powyższe zapytanie nie dzała poprawnie. Kluby w których dany piłkarz nie gra, nie znajdują się w raporcie.
Czy to związane jest z tym iż WHERE, które wywołuje się na końcu wyrzuca te rekordy?
Jak mogę ominąć ten problem? Czy jedynym wyjściem jest podzapytanie skorelowane w sekcji SELECT?