jointure mysql

jointure mysql - SQL/NoSQL - Programmation

Marsh Posté le 23-06-2006 à 11:05:33    

bonjour, je suis debutant en jointures et j'aimerais votre aide.
J'utilise mysql
 
Voici 3 tables :
- users ; champs que je veux et utilise au SELECT ('id', 'name', 'fname', 'entity_id')
- groups ; champs que je veux ('name') et champs utile au SELECT ('id')
- users_groups ; je ne veux aucun champs, mais elle possède les champe ('user_id', 'group_id')
 
Principe :
users et la table des utilisateurs
groups est la table des groups
users_groups est la liste des utilisateurs qui appartiennent à un groupe
 
J'aimerais selectioner les users qui ont un entity_id=1
Mais, j'aimerais avoir également le nom du group ('groups.name') auquel il appartient (mais il possible qu'ils n'appartiennent à aucun group et que donc il n'y pas d'entré dans users_groups leurs concernant)
 
En gros, le resultat possède les lignes users.id,users.name,users.fname,users.entity_id,groups.name (qui lui peut voiloir null ou une string)
 
J'ai essayer avec des LEFT JOIN, mais ca ne me renvoi pas les users qui n'appartient pas à un groupe
 
Merci de votre aide


Message édité par nORKy le 23-06-2006 à 11:06:40
Reply

Marsh Posté le 23-06-2006 à 11:05:33   

Reply

Marsh Posté le 23-06-2006 à 11:46:55    

Pour tes jointure,tu doi d'abord utiliser des trigger sinon ca va etre dur
 
tu utilise quel version de MySql?
Et peut tu me passer tout les champ qu'il y a dans tes table users et groups
 
et si j'ai bien compris ta table users_groups est la table ou tu rassemble les information prisent sur les 2 autre table?
 
edit:mauvaise comprehension de ma part desole :ange:


Message édité par shikra le 30-06-2006 à 11:13:54
Reply

Marsh Posté le 23-06-2006 à 12:00:23    

un trigger pour quoi faire ??
 
bon, voici la tables des users :

Code :
  1. user_id | user_name | user_fname |entity_id
  2.    1    |     dupont  | patrick     |    1
  3.    2    |     martin   |  jean        |    1
  4.    3    |        foo     | bar          |    2


 
table groups

Code :
  1. group_id | group_name
  2.     1      | administrateur
  3.     2      |   superviseur


 
table users_groups

Code :
  1. user_id | group_id
  2.      1      |   1
  3.      3      |   2


Ce qui veut dire que le users 1 appartient au groupe 1 et l'users 3 apparient au groupe 2 (et donc que le user 2 n'appartient à aucun groupe
 
Pour entity_id = 1, je voudrais donc comme résultat

Code :
  1. user_name | user_fname | group_name
  2.    dupont   | patrick     | administrateur
  3.    martin    |  jean        |


Reply

Marsh Posté le 23-06-2006 à 14:46:42    

Je me suis finalement documenté et re documenté
J'ai pendant un moment eut une erreur 1066 : not unique table/alias groups
et J'ai finalement réussi :
 

Code :
  1. SELECT u.user_id,user.user_name,u.user_fname,g.groupe name
  2. FROM users u
  3. LEFT OUTER JOIN users_groups ug ON ug.user_id = u.user_id
  4. LEFT OUTER JOIN groups g ON g.group_id = ug.group_id
  5. WHERE u.entity_id=1


 
Merci


Message édité par nORKy le 23-06-2006 à 14:47:05
Reply

Sujets relatifs:

Leave a Replay

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