Aide création requete SQL complexe

AirT0n
Invité n'ayant pas de compte PHPfrance

28 janv. 2010, 12:09

Hello,

Description de la situation :
--------------------------
Dans le cadre du développement d'une application gérant les formations suivies dans la société, je souhaiterai créer une requête permettant de sortir la liste des formations qui n'ont pas été suivies par plusieurs utilisateurs sélectionnés. Sachant qu'un utilisateur possède une ou plusieurs fonctions et qu'une formation peut être destiné pour une ou plusieurs fonctions. Toutes les tables étant reliées entre elles, comment sortir cette requete ?

J'ai réussi à créer une requête mais qui ne me permet de sortir la liste des formations non suivies pour UN utilisateur sélectionné et non pour plusieurs...
SELECT FORMATION.NOM_FORM, USERS.ID_USER,USERS.NOM,USERS.PRENOM FROM FORMATION 
inner JOIN FORMATION_FONCTION ON FORMATION.ID_FORMATION = FORMATION_FONCTION.ID_FORMATION 
INNER JOIN USERS
INNER JOIN USER_FONCTION ON USERS.ID_USER = USER_FONCTION.ID_USER 
ON USER_FONCTION.ID_FONCTION = FORMATION_FONCTION.ID_FONCTION 
WHERE 1=1 AND USERS.[ID_USER] IN (384)
AND NOT EXISTS (SELECT * FROM FORMATION_USER WHERE FORMATION_FONCTION.ID_FORMATION = FORMATION_USER.ID_FORMATION and FORMATION_USER.[ID_USER] IN (384))
--> Celle-ci ne fonctionne pas si je met plusieurs ID d'utilisateur. Si un seul = OK.

Description des tables :
----------------------
Table Formation : (contient toutes les formations) ID_FORM,NOM_FORM
Table Users : (contient la liste des users ) ID_USER, NOM_USER
Table Formation_User : ID_FORM_USER,ID_USER,ID_FORM,DATE
Table Fonction : (contient la liste des fonctions) ID_FONCTION,NOM_FONCT
Table User_Fonction : (contient la liste des fonctions des users): ID_USER_FONCT,ID_USER,ID_FONCTION
Table Formation_Fonction : ID_FORM_FONCT,ID_FORM,ID_FONCTION

Merci d'avance pour votre aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

28 janv. 2010, 12:28

Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code], [sql] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer