Requete difficile pour moi

Default
,

Bonjour

je plante grave pour l'ecriture d'une requete SQL pour MySql
je suis en train d'ecrire une application de gestion de planning medical
je dispose de 2 tables:

  • 1 table med comprenant les champs ID, NOM, PRENOM, TEL, MAIL, etc .. correspondant aux cordonnées des médecins
  • 1 table planning comprenant les champs ID, DATE (les dates du champ DATE sont déjà générées sur plusieurs jours par avance), ID_MED1 (ID du medecin de garde jour), ID_med2 (ID du medecin no 2) , ID_MED3, etc.. ID_MED1 pourrait être une clé étrangère dans cette table

Je veux lister via la requête que je cherche à écrire, la forme suivante
DATE MED1 MED2 MED3
01/01/2018 DUPONT TOTO DURAND
02/01/2018 TOTO DURAND DUPONT

Avec dans ma table med par exemple
ID MED_NOM
1 DUPONT
2 DURAND
3 TOTO

et dans ma table planning
ID DATE ID_MED1 ID_MED2 ID_MED3
1 01/01/2018 1 3 2
2 02/01/2018 3 2 1

j'arrive avec le debut de requete suivant , mais impossible d'editer MED2 et MED 3
Faut t'il creer une sous requete ?

Ci dessous mon ébauche de script , mais dès MED2 cela plante

SELECT planning.DATE, planning.ID_MED1, planning.ID_MED2, med.ID, med.MED_NOM AS MED1
FROM planning, med
WHERE planning.ID_MED1 = med.ID, planning.ID_MED2=MED.ID

Merci pour tout

Bien cordialement

2 Réponse

44835
,

Bonjour,
Ce n'est pas une bonne idée de mettre la liste des ID_MED dans la table planning
il faut plutot créer une table planning_med qui lie un medecin à un planning et qui reprend ID_PLANNING et ID_MED et une POSITION
Comme ça si tu veux connaitre le planning d'un médecin tu n'as pas à chercher dans trois champs

Si tu veux continuer avec ta solution, il faut que tu fasses 3 jointures avec 3 fois la table MED mais avec trois alias différents.

Default
,

la solution la plus conne est :

select p.date, (select m.nom from med m where m.id=p.id_med1) as med1, (select m.nom from med m where m.id=p.id_med2) as med2, (select m.nom from med m where m.id=p.id_med3) as med3 from planning q;