Mysql, Requete plusieurs valeurs sur table liaison

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mysql, Requete plusieurs valeurs sur table liaison

par _nico_13 » 09 juin 2009, 18:45

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.

par enneite » 09 juin 2009, 18:06

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.

Mysql, Requete plusieurs valeurs sur table liaison

par _nico_13 » 09 juin 2009, 14:53

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 ?