IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

sélection avec table associative


Sujet :

Langage SQL

  1. #1
    Invité
    Invité(e)
    Par défaut sélection avec table associative
    Bonjour,

    J'éssais de faire une sélection sur des tables associatives (type n-n).

    J'ai une table users, une table groups et une table users_groups (pas besoin de faire de dessins je pense... )

    J'aimerais sélectionner tous les groupes par rapport à l'utilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT groups.* 
    FROM groups, users, users_groups 
    WHERE users_groups.FK_users=6 
    AND groups.ID=users_groups.FK_groups
    Cette requête me renvoi bien les groupes dont fait partie l'utilisateur 6 mais il écrit plusieurs fois le résultat.

    Je suis un peu un looser en requête SQL
    Dernière modification par Chtulus ; 18/03/2009 à 09h06.

  2. #2
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Premièrement l'idéal serait d'utiliser la norme en utilisant des INNER JOIn ou LEFT/RIGHT OUTER JOIN.

    Ensuite tu utilises 3 tables et tu fais une seule jointure. Il t'en manque donc une !
    Erreur sur tu n'aurais pas eu avec la norme standard

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Il faut utiliser distinct après le select.
    Au passage je normalise vos jointures, et ce faisant on comprend la remarque précédente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT DISTINCT
        <vos_champs>
    FROM
        groups g
        INNER JOIN users_groups ug
          ON ug.FK_groups = g.ID
        INNER JOIN users u
          ON u.ID = ug.FK_users -- problème ici !
    WHERE
        u.ID = 6

  4. #4
    Membre expérimenté
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Points : 1 413
    Points
    1 413
    Par défaut
    Il n'y a peut-être même pas besoin du distinct une fois l'erreur de jointure corrigée

Discussions similaires

  1. Requête HQL avec tables associatives
    Par mecha31 dans le forum Hibernate
    Réponses: 1
    Dernier message: 15/05/2015, 13h32
  2. Réponses: 1
    Dernier message: 12/07/2013, 08h32
  3. [MySQL] Clé étrangère avec table association
    Par leototot dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/07/2009, 14h53
  4. Rêquete de sélection avec des tables associative
    Par snoopy69 dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2006, 15h31
  5. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo