Aide solution requete ... pas trop compliqué mais bon ... ;-)

Aide solution requete ... pas trop compliqué mais bon ... ;-) - SQL/NoSQL - Programmation

Marsh Posté le 02-04-2005 à 20:34:54    

Bonjour,
 
j'ai 2 table : UTILISATEURS, UTILISATEURS_GROUPES_ASSOCIATIONS
 
Mon premier problème ( que j'ai résolu ) était de trouver tous les utilisateurs ayant un son ID présent dans la table d'association "UTILISATEURS_GROUPES_ASSOCIATIONS". Cela me donne tous les utilisateurs faisant parti d'un groupe -> J'ai donc effectué cette requete qui fonctionne parfaitement :
 
SELECT UTILISATEURS.*, UTILISATEURS_GROUPES_ASSOCIATIONS.ID_GROUPE  
FROM UTILISATEURS, UTILISATEURS_GROUPES_ASSOCIATIONS  
WHERE UTILISATEURS.ID = UTILISATEURS_GROUPES_ASSOCIATIONS.ID_UTILISATEUR  
ORDER BY UTILISATEURS.NOM, UTILISATEURS.PRENOM
 
 
Cependant, dans la table UTILISATEURS, j'ai des utilisateurs dont l'ID ne figure pas dans la table d'association UTILISATEURS_GROUPES_ASSOCIATIONS et je souhaiterais les recuperer. Pour cela, je pensais faire :
 
SELECT UTILISATEURS.*, UTILISATEURS_GROUPES_ASSOCIATIONS.ID_GROUPE  
FROM UTILISATEURS, UTILISATEURS_GROUPES_ASSOCIATIONS  
WHERE UTILISATEURS.ID <> UTILISATEURS_GROUPES_ASSOCIATIONS.ID_UTILISATEUR  
ORDER BY UTILISATEURS.NOM, UTILISATEURS.PRENOM
 
Et là, ca ne marche pas et je comprends pas pourquoi !!!! Non seulement, ca me sort pas les bons users, mais en plus ca me sort des doublons. En réfléchissant bien, ca me parait un peu logique le résultat mais je sais pas comment le tourner pour arriver à mes fins.
 
Quelqu'un n'aurait-il pas la solution parce que ca me parait bete comme choux mais je vois pas !
 
Je vous remercie par avance de votre réponse.

Reply

Marsh Posté le 02-04-2005 à 20:34:54   

Reply

Marsh Posté le 02-04-2005 à 21:06:24    

SGBD ?...

Reply

Marsh Posté le 02-04-2005 à 21:14:26    

c'est ACCESS 2000.

Reply

Marsh Posté le 02-04-2005 à 21:26:47    

select * from utilisateur where id_utilisateur not in (select id_utilisateur from UTILISATEURS_GROUPES_ASSOCIATIONS.ID_GROUPE)

Reply

Marsh Posté le 02-04-2005 à 21:27:21    

(j'ai pas repris tes noms de champs dans la requète mais l'important est le where ... not in.

Reply

Marsh Posté le 02-04-2005 à 21:36:42    

Je te remercie, je vais essayer ca !

Reply

Marsh Posté le 02-04-2005 à 21:41:48    

j'ai fait ca mais ca n'a pas l'air de fonctionner :
 
SELECT UTILISATEURS.ID, UTILISATEURS.NOM, UTILISATEURS.PRENOM  
FROM UTILISATEURS  
WHERE UTILISATEURS.ID NOT IN  
(SELECT UTILISATEURS.*, UTILISATEURS_GROUPES_ASSOCIATIONS.ID_GROUPE FROM UTILISATEURS, UTILISATEURS_GROUPES_ASSOCIATIONS WHERE UTILISATEURS.ID = UTILISATEURS_GROUPES_ASSOCIATIONS.ID_UTILISATEUR)
 
Est-ce que j'ai bien compris la démarche ?

Reply

Marsh Posté le 02-04-2005 à 21:43:25    

Il me dit :
 
"Vous avez écrit une sous-requête pouvant renvoyer plus d'un champ sans utiliser le mot réservé EXISTS dans la clause FROM de la requête principale. Révisez l'instruction SELECT de la sous-requête pour obtenir un seul champ."

Reply

Marsh Posté le 02-04-2005 à 22:04:07    

ca y est, j'ai réussi à appliquer ta requete :
 
SELECT *  
FROM UTILISATEURS  
where ID  
NOT IN (SELECT ID_UTILISATEUR FROM UTILISATEURS_GROUPES_ASSOCIATIONS)
 
merci pour ton aide !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed