Bonsoir, je cherche la solution pour ma requête, en fait j'ai plusieurs tables,
donc voici la première : personnels qui regroupe l'ensemble du personnel
- id_pers (id auto-incrémenté de ma table)
- pers_nom
- pers_prenom
- pers_grade (id de la table grade pour désigner le grade de la personne)
ma seconde table grade qui regroupe l'ensemble des grades disponibles
- id_grade (id auto-incrémenté de ma table)
- grd_grade (le nom du grade : colonnel, capitaine ....)
ensuite j'ai une table stages qui regroupe la liste des stage disponible pour l'ensemble du personnel :
- id_st (id auto-incrémenté de ma table)
- st_titre (le nom du stage)
ensuite j'ai une table loi_stage qui définit d’après le grade les stages obligatoires :
- id_loi (id auto-incrémenté de ma table)
- grad (l'id de la table grade pour le quel le stage est obligatoire)
- stag (l'id de la table stages définissant le stage)
et enfin j'ai une table pers_stages qui regroupe les stages fait par la personne ainsi que la date de réalisation :
- id (id auto-incrémenté de ma table)
- sp (l'id de la personnels qui contient l'id du sp)
- stage (l'id de la table stages qui contient le stage réalisé)
- date (la date de réalisation)
Alors moi je dois faire une requête qui me donne le nom des stages que la personne concerné n'a pas faite d’après sont grade :
j'ai donc fait ceci :
mais la j'obtient la totalité des stages même ce en dehors de sont grade qui n'ont pas était fait !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT * FROM stages WHERE stages.id_st NOT IN (SELECT stage FROM pers_stages, loi_stages WHERE loi_stages.stag = pers_stages.stage AND loi_stages.grad = 1)
pourriez vous me donner un tuyau ??? merci![]()
Partager