Maison > Questions et réponses > le corps du texte
J'ai une table teacher
表,还有一个 phone
où le lien se fait par l'identifiant de la personne. Quand je recherche le numéro de téléphone de chaque professeur, cela ressemble à ceci :
(SELECT T.ID_TEACHER, P.PHONE, P.NUMBER FROM TEACHER T LEFT JOIN PHONES P ON P.IDPERSON = T.ID_TEACHER)
ID_TEACHER | Téléphone | NUMÉRO |
---|---|---|
1 | 1 | xxxxxxx |
1 | 2 | xxxxxxxxx |
1 | 3 | xxxxxxx |
2 | 1 | xxxxxxx |
Cependant, je souhaite qu'il s'affiche comme ceci :
ID_TEACHER | Téléphone | NUMÉRO | Téléphone | NUMÉRO | Téléphone | NUMÉRO |
---|---|---|---|---|---|---|
1 | 1 | xxxxxx | 2 | xxxxxx | 3 | xxxxxx |
2 | 1 | xxxxxxxxx |
Que dois-je faire ? J'utilise MYSQL. Je n'ai pas trouvé de solution.
P粉4760461652023-09-10 00:56:25
Vous devez utiliser l'agrégation conditionnelle :
Essayez ce qui suit :
SELECT T.ID_TEACHER, MAX(CASE WHEN P.PHONE = 1 THEN P.PHONE ELSE NULL END) AS PHONE1, MAX(CASE WHEN P.PHONE = 1 THEN P.NUMBER ELSE NULL END) AS NUMBER1, MAX(CASE WHEN P.PHONE = 2 THEN P.PHONE ELSE NULL END) AS PHONE2, MAX(CASE WHEN P.PHONE = 2 THEN P.NUMBER ELSE NULL END) AS NUMBER2, MAX(CASE WHEN P.PHONE = 3 THEN P.PHONE ELSE NULL END) AS PHONE3, MAX(CASE WHEN P.PHONE = 3 THEN P.NUMBER ELSE NULL END) AS NUMBER3 FROM TEACHER T LEFT JOIN PHONES P ON P.IDPERSON = T.ID_TEACHER GROUP BY T.ID_TEACHER