SQL-deals in tabellen. Een tabel heeft per definitie een aantal rijen, die allemaal dezelfde kolommen hebben. Uw zoekopdracht zal een resultatenset opleveren die de informatie van de klant dupliceert voor elke cursus die ze heeft gevolgd.
Uw presentatielaag gaat die tabel opmaken door de eerste rij van elke nieuwe client op te merken en de clientheader te doorbreken. Je doet dat in php of Java of Crystal Reports of een dergelijke presentatietechnologie.
Uw vraag ziet er ongeveer zo uit.
SELECT a.id, a.name, a.address, a.etc,
c.Name
FROM Clients a
JOIN CoursesForClients b USING(ClientID)
JOIN Courses c USING(CourseID)
ORDER BY a.id, c.CourseID
@Strawberry maakt een goed punt over de valkuil van het gebruik van USING()
. Hier is dezelfde vraag op ON
.
SELECT a.id, a.name, a.address, a.etc,
c.Name
FROM Clients a
JOIN CoursesForClients b ON a.ClientID = b.ClientID
JOIN Courses c ON b.CourseID = c.CourseID
ORDER BY a.id, c.CourseID