Mysql
 sql >> Database >  >> RDS >> Mysql

Come formulare query per mostrare tutti i corsi seguiti da una persona

Offerte SQL nelle tabelle. Per definizione una tabella ha un mucchio di righe, ognuna delle quali ha le stesse colonne l'una dell'altra. La tua richiesta produrrà un set di risultati che duplica le informazioni del cliente per ogni corso che ha seguito.

Il tuo livello di presentazione formatterà quella tabella, notando la prima riga di ogni nuovo client e suddividendo l'intestazione del client. Lo farai in php o Java o Crystal Reports o qualche tecnologia di presentazione simile.

La tua domanda è qualcosa del genere.

    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 sottolinea bene la trappola dell'utilizzo di USING() . Ecco la stessa domanda su 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