sql >> Base de Datos >  >> RDS >> Mysql

Cómo formular una consulta para mostrar todos los cursos tomados por una persona

SQL trata en tablas. Por definición, una tabla tiene un montón de filas, cada una de las cuales tiene las mismas columnas que las demás. Su consulta generará un conjunto de resultados que duplica la información del cliente para cada curso que tomó.

Su capa de presentación va a formatear esa tabla, notando la primera fila de cada nuevo cliente y rompiendo el encabezado del cliente. Lo hará en php o Java o Crystal Reports o alguna tecnología de presentación similar.

Su consulta es algo como esto.

    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 hace un buen comentario sobre la trampa de usar USING() . Aquí está la misma consulta en 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