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

PHP & Base de données Discussion :

lier trois tables [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 107
    Par défaut lier trois tables
    Bonjour,

    J'ai un petit problème de syntaxe SQL concernant les jointures... Je vous explique, j'ai trois tables dans lesquels je veux accéder à des éléments. Voici ces tables :

    UTILISATEUR
    id_user
    login
    pass
    id_entreprise

    ENTREPRISE
    id_entreprise
    intitule_entreprise

    DROIT
    id_user
    id_groupe

    J'aimerais avoir accès aux informations de l'utilisateur (jusque là ça va), ainsi qu'au nom de l'entreprise (jusque là ça va aussi) mais par contre impossible d'accéder à l'id_groupe associé à l'id_user...

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT id_user,login,pass,nom_entreprise FROM utilisateur NATURAL JOIN entreprise WHERE id_user<>1";
    Avec ça j'obtiens les données de l'utilisateur et le nom de l'entreprise, normal me direz-vous. Maintenant, quelle jointure faire pour avoir l'id_groupe contenu dans DROIT? J'ai testé une autre jointure naturelle mais ça ne fonctionne pas. J'ai également tenté avec un SELECT imbriqué.
    Pour info, la clause WHERE sert simplement à ne pas sélectionner l'utilisateur 1 qui est l'admin.

    Merci d'avance pour votre aide,

    Cordialement.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_user,login,pass,nom_entreprise
    FROM utilisateur JOIN entreprise USING (id_entreprise)
    JOIN droit USING(id_user)
    WHERE utilisateur.id_user<>1
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 107
    Par défaut
    Merci de la réponse!
    Mais ça me fait le même problème qu'avant, ça ne me liste pas tout le contenu de la table UTILISATEUR.
    J'ai juste rajouté id_groupe dans le SELECT parce que j'ai besoin de l'affiché.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id_user,login,pass,nom_entreprise,id_groupe
    FROM utilisateur JOIN entreprise USING (id_entreprise)
    JOIN droit USING(id_user)
    WHERE utilisateur.id_user<>1
    Mais du coup je n'ai que 17 utilisateurs sur 100. J'avais le même souci en faisant deux NATURAL JOIN il me semble.

  4. #4
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Par défaut
    tu a probablement des utilisateurs avec des id_entreprise = null et/ou qui ne sont pas repris dans la table droit

    essaye:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select * from UTILISATEUR
    left join ENTREPRISE
    on UTILISATEUR.id_entreprise=ENTREPRISE.id_entreprise
    left join DROIT
    on UTILISATEUR.id_user=DROIT.id_user

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 107
    Par défaut
    Bonjour,

    Merci de ta réponse
    Effectivement ça fonctionne, mais normalement j'ai seulement l'administrateur qui a un id_entreprise qui vaut 0. Les autres ont par défaut la valeur 1.
    J'ai juste un petit souci, comment faire pour ne pas afficher l'id_user 1? Je ne vois pas où placer cette clause avec les jointures.

    Encore merci,
    Cordialement.

  6. #6
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 107
    Par défaut
    J'ai déjà parcouru ce document.
    Non c'est bon en fait, j'avais fait une erreur bête dans la clause WHERE.

    Merci de votre aide!

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

Discussions similaires

  1. Lier trois tables dans un seul DataGridView
    Par feadin dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/02/2010, 16h43
  2. Lier trois tables dans une seule requête ?
    Par tempirate dans le forum Requêtes
    Réponses: 2
    Dernier message: 18/06/2006, 19h27
  3. lier deux tables a partir dun calcul!!
    Par marie10 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/04/2004, 09h44
  4. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45
  5. jointure sur TROIS tables
    Par caribou_belle dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/03/2004, 11h20

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