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

Requêtes MySQL Discussion :

Jointures sur 3 tables


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 20
    Par défaut Jointures sur 3 tables
    Bonjour,
    J'en appelle à vos compétences afin de corriger une requête SQL qui ne fonctionne pas...
    Je commence réellement le SQL que depuis peu et je galère sur certaines choses, notamment les jointures, voici mon cas :

    4 tables :
    - adherent
    - livre
    - categorie
    - emprunt

    champs de adherent :
    - id_adherent
    - nom
    - prenom
    - rue
    - ville
    - cp
    - tel

    champs de livre :
    - id_livre
    - id_categorie
    - titre
    - auteur
    - isbn
    - editeur
    - prix

    champs de categorie :
    - id_categorie
    - nom

    champs de emprunt :
    - id_adherent
    - id_livre
    - date_emprunt
    - date_retour

    La gestion (ajout, modif, suppr.) des livres et adhérents est en place. Je cherche maintenant à afficher les emprunts en cours, c'est à dire quel adhérent a emprunté ce(s) livre(s) et je suis parti sur une requête de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $retour = mysql_query('	SELECT	l.id_livre, a.id_adherent
    				FROM 	livre l, adherent a 
     				    INNER JOIN emprunt e 
    					ON l.id_livre e.id_livre 
     	 	 	 	 	AND a.id_adherent = e.id_adherent');
    Où est mon erreur, j'avoue coincer un peu... Merci d'avance !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 954
    Par défaut
    Ton erreur, c'est que tu mélanges la syntaxe normalisée avec l'ancienne :
    Donc soit la syntaxe ANSI:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT l.id_livre, a.id_adherent
    FROM livre l
    INNER JOIN emprunt e ON l.id_livre = e.id_livre
    JOIN adherent a ON a.id_adherent = e.id_adherent
    Soit l'ancienne syntaxe (donné juste en exemple, préfère la norme évidemment)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT l.id_livre, a.id_adherent
    FROM livre l, emprunt e, adherent a
    where l.id_livre = e.id_livre
    and a.id_adherent = e.id_adherent
    Ceci dit pour ne récupérer que les id_livre et id_adherent pas besoin de jointure, tu as juste à intéroger la table emprunt.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Par défaut
    Bonjour,

    je ferais ceci.

    Mais à verifier pour le where
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT nom, titre FROM emprunt E
    	INNER JOIN  adherent A ON E.id_adherent = A.id_adherent
    	INNER JOIN livre L ON E.id_livre = L.id_livre
    where E.date_emprut < now() AND E.date_retourn is null

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 20
    Par défaut
    Merci de vos réponses je teste et vous tiens au courant

Discussions similaires

  1. jointure sur 3 tables
    Par jojo22222 dans le forum Requêtes
    Réponses: 5
    Dernier message: 23/01/2006, 22h47
  2. Jointure sur 3 tables
    Par tonymontana4192 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/11/2005, 13h24
  3. [MySQL] Jointure sur une table déjà jointe
    Par genova dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/10/2005, 23h54
  4. jointure sur TROIS tables
    Par caribou_belle dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/03/2004, 11h20
  5. Jointure sur 2 tables de bases différentes
    Par Celina dans le forum Langage SQL
    Réponses: 10
    Dernier message: 10/11/2003, 11h56

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