SQLはテーブルを扱います。定義上、テーブルには一連の行があり、各行には互いに同じ列があります。クエリにより、受講した各コースのクライアントの情報を複製する結果セットが生成されます。
プレゼンテーション層は、新しい各クライアントの最初の行に注目し、クライアントヘッダーを分割することにより、そのテーブルをフォーマットします。これは、php、Java、Crystal Reports、またはそのようなプレゼンテーション技術で行います。
クエリは次のようなものです。
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は、USING()
を使用する際の落とし穴について良い点を示しています。 。これは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