SQL handlar i tabeller. Per definition har en tabell ett gäng rader, som var och en har samma kolumner som varandra. Din fråga kommer att ge en resultatuppsättning som duplicerar kundens information för varje kurs hon tog.
Ditt presentationslager kommer att formatera den tabellen genom att lägga märke till den första raden av varje ny klient och bryta ut klienthuvudet. Du kommer att göra det i php eller Java eller Crystal Reports eller någon sådan presentationsteknik.
Din fråga är ungefär så här.
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 gör en bra poäng om fallgropen med att använda USING()
. Här är samma fråga på 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