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 :

Un soucis avec une requête externe


Sujet :

Langage SQL

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut Un soucis avec une requête externe
    Bonjour

    J'ai trois tables :
    - utilisateur (id_utilisateur, nom_utilisateur)
    - droit (id_droit, nom_droit)
    - droit_utilisateur (id_utilisateur, id_droit)

    Contenu de la table Utilisateur :
    - toto (id 1)
    - tutu (id 2)


    Contenu de la table Droit :
    - Créer une page (id 1)
    - Modifier une page (id 2)
    - Supprimer une page (id 3)

    Contenu de la table droit_utilisateur :
    - 1 1
    - 1 2
    - 2 3

    Mon but est d'afficher pour un utilisateur sélectionné, tous les droits avec à coté Oui/Non en fonction de s'il a ou pas ce droit. Donc la pour l'utilisateur 1, ça donnerait ceci :
    - Créer une page : Oui
    - Modifier une page : Oui
    - Supprimer une page : Non
    Donc j'ai essayé de faire une requête externe qui me retournerait ceci pour l'utilisateur 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    - "Créer une page" "1"
    - "Modifier une page" "1"
    - "Supprimer une page" "NULL"
    Mais ça ne fonctionne pas comme je veux, ça me retourne que les deux droits présents pour cet utilisateur J'aurai fait une requête sans LEFT ça aurait été pareil...

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT D.nom_droit
    FROM droit D
    LEFT OUTER JOIN droit_utilisateur DU
    ON D.id_droit=DU.id_droit
    where DU.id_utilisateur = 1
    Si j'essaye avec :
    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT D.nom_droit
    FROM droit D
    LEFT OUTER JOIN droit_utilisateur DU
    ON D.id_droit=DU.id_droit
    where DU.id_utilisateur = 1 OR DU.id_utilisateur is NULL
    => ça me retourne presque ce que je veux. Il me manque juste le droit 3 qui est assigné à l'utilisateur 2...

    Quelqu'un aurait une idée s'il vous plait?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT D.nom_droit
    FROM droit D
    LEFT OUTER JOIN droit_utilisateur DU 
      ON D.id_droit=DU.id_droit AND DU.id_utilisateur = 1
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut
    Merci beaucoup, ça fonctionne
    Je savais pas du tout qu'on pouvait mettre un AND dans une jointure externe

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    en fait, on peut mettre tout ce qu'on veut...
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Points : 208
    Points
    208
    Par défaut
    Si j'avais su ça avant, ça m'aurait évité de perdre 3h la dessus
    Merci encore pour ton aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. soucis avec une requête REPLACE
    Par r1rizzi dans le forum Requêtes
    Réponses: 0
    Dernier message: 14/09/2012, 16h50
  2. Soucis avec une requête update
    Par pabois dans le forum Zend_Db
    Réponses: 2
    Dernier message: 23/01/2009, 17h47
  3. soucis avec une requète d'insertion
    Par veriecherie dans le forum ASP
    Réponses: 8
    Dernier message: 05/08/2008, 11h11
  4. [SQL] Soucis avec une requête
    Par Auden dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 31/05/2007, 15h07
  5. Petit soucis avec une requête
    Par Jeetiz dans le forum Requêtes
    Réponses: 4
    Dernier message: 01/02/2007, 14h53

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