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 :
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)
mais la j'obtient la totalité des stages même ce en dehors de sont grade qui n'ont pas était fait !
pourriez vous me donner un tuyau ??? merci