Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como formular consulta para mostrar todos os cursos feitos por uma pessoa


SQL lida com tabelas. Por definição, uma tabela tem um monte de linhas, cada uma com as mesmas colunas que a outra. Sua consulta vai gerar um conjunto de resultados que duplica as informações do cliente para cada curso que ele fez.

Sua camada de apresentação vai formatar essa tabela, observando a primeira linha de cada novo cliente e quebrando o cabeçalho do cliente. Você fará isso em php ou Java ou Crystal Reports ou alguma tecnologia de apresentação.

Sua consulta é algo assim.
    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 faz um bom ponto sobre a armadilha de usar USING() . Aqui está a mesma consulta em 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