Page 1 sur 1

Mysql, Requete plusieurs valeurs sur table liaison

Posté : 09 juin 2009, 14:53
par _nico_13
Bjour,

Je galere sur ma requête, voici mon problème :
j'ai une table utilisateur, chaque utilisateur peut appartenir de 0 à n groupe,

Voici mes tables :
DROP TABLE IF EXISTS lien_user_groupe;
CREATE TABLE `lien_user_groupe` (                                  
                    `id_lien_user_groupe` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,  
                    `id_leuser` INT(10) UNSIGNED NOT NULL DEFAULT '0',               
                    `id_groupe` INT(10) UNSIGNED NOT NULL DEFAULT '0',               
                    PRIMARY KEY  (`id_lien_user_groupe`)  ;
                                      
DROP TABLE IF EXISTS leuser;
    CREATE TABLE `leuser` (                                  
          `id_leuser` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,  
          `nom` VARCHAR(100) DEFAULT NULL,                       
          PRIMARY KEY  (`id_leuser`)                             
        ) ENGINE=MYISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1  
DROP TABLE IF EXISTS groupe;               
      CREATE TABLE `groupe` (                                  
          `id_groupe` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,  
          `nom` VARCHAR(100) DEFAULT NULL,                       
          PRIMARY KEY  (`id_groupe`)                             
        ) ENGINE=MYISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1  
1 table user
1 table groupe
1 table pour faire la liaison (0,n)


J'arrive à récuper le id_leuser appartenant au groupe 1 ou 2 ou xx,
ce que je n'arrive pas à récupérer, c'est le(s) iduser qui répondent à la condition d'appartenir au groupe 1 ET 2 (sans exclusif).

Merci de votre aide..

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

En fait j'arrive à faire avec cette méthode :
SELECT lien_user_groupe.id_leuser
FROM 
lien_user_groupe

WHERE id_groupe=1
AND lien_user_groupe.id_leuser IN
	 (SELECT lien_user_groupe.id_leuser
	FROM 
	lien_user_groupe

	WHERE id_groupe=2   
		AND lien_user_groupe.id_leuser IN
		 (SELECT lien_user_groupe.id_leuser
		FROM 
		lien_user_groupe

		WHERE id_groupe=3)
	)

Mais je ne sais pas si c'est pas un peu consommateur ?

Posté : 09 juin 2009, 18:06
par enneite
Pour l'instant, je ne vois pas comment faire avec une requete plus simple

Ce qu'il faudrait déjà savoir effectivement, c'est si ta requete est plus ou moins couteuse que deux requetes
SELECT lien_user_groupe.id_leuser FROM lien_user_groupe WHERE id_groupe=1
SELECT lien_user_groupe.id_leuser FROM lien_user_groupe WHERE id_groupe=2
qui permettraient de gerer au niveau applicatif ce que tu désires.

Posté : 09 juin 2009, 18:45
par _nico_13
Pour l'instant, je ne vois pas comment faire avec une requete plus simple

Ce qu'il faudrait déjà savoir effectivement, c'est si ta requete est plus ou moins couteuse que deux requetes
SELECT lien_user_groupe.id_leuser FROM lien_user_groupe WHERE id_groupe=1
SELECT lien_user_groupe.id_leuser FROM lien_user_groupe WHERE id_groupe=2
qui permettraient de gerer au niveau applicatif ce que tu désires.
Merci, mais c'est assez compliqué pour découper les requêtes car il peut y a avoir de 1 à n éléments de choix.