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 :

jointure complexes de 4 tables dépendant d'une seule


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut jointure complexes de 4 tables dépendant d'une seule
    Bonjour,

    je suis occupé de réaliser une médiathèque pour mon cours de technique informatique et j'ai un petit problèmes quant à la formulation d'une requête. Ci-joint vous trouverez le modèle logique de donnée associé à ce projet.

    les données que j'aimerais récupérer sont : le titre, le genre, l'adressepc, l'année de sortie du film, la saga auquel il appartient mais également les noms des différents acteurs, réalisateurs et producteurs.

    voici le genre de requête dont mysql me renvoie une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select distinct media.titre, media.genre, media.adressepc, media.annéedesortie, media.saga, personne.nom, personne.prénom
    from media
    inner join acteur
    on acteur.idmedia=media.idmedia
    inner join realisateur
    on realisateur.idmedia=media.idmedia
    inner join producteur
    on producteur.idmedia=media.idmedia
    inner join personne
    on personne.idpersonne=acteur.idpersonne
    inner join personne
    on personne.idpersonne=realisateur.idpersonne
    inner join personne
    on personne.idpersonne=producteur.idpersonne
    where media.titre="x";

    l'erreur renvoyée est que j'appelle plusieurs fois la table personne mais je ne vois pas comment faire d'autre pour récupérer en meme temps le nom des producteurs, des réalisateurs et des acteurs... existe-t-il une synthaxe particulière me permettant de les obtenir sans devoir appeler 3 fois la même table ?

    merci pour votre attention, j'espère avoir une réponse assez rapidement car ce problème est assez urgent :s
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Utilisez des Alias pour votre table !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    inner join personne P1 
    on P1.idpersonne=acteur.idpersonne
    inner join personne P2 
    on P2.idpersonne=realisateur.idpersonne 
    inner join personne P3 
    on P3.idpersonne=producteur.idpersonne
    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    merci chtulus pour ta réponse ! il fallait effectivement utiliser des alias. Juste une petite chose c'est que dans mon cas, il ne fallait pas directement l'utiliser car sinon il ne trouve aucune table "personne".
    Voici le code corrigé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    select distinct media.titre, media.genre, media.adressepc, media.annéedesortie, media.durée, media.saga, personne.nom, personne.prénom, P2.nom, P2.prénom, P3.nom, P3.prénom, pays.nompays
    from media
    inner join pays
    on pays.idmedia=media.idmedia
    inner join acteur
    on acteur.idmedia=media.idmedia
    inner join realisateur
    on realisateur.idmedia=media.idmedia
    inner join producteur
    on producteur.idmedia=media.idmedia
    INNER JOIN personne  
    ON personne.idpersonne=acteur.idpersonne
    INNER JOIN personne as P2 
    ON P2.idpersonne=realisateur.idpersonne 
    INNER JOIN personne as P3 
    ON P3.idpersonne=producteur.idpersonne
    where media.titre="le nouveau monde";
    Encore merci pour ta réponse et pour ta rapidité !

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Re,

    Effectivement, il serait bon de poster votre question plutôt en C# maintenant que votre requête retourne ce que vous souhaitez.

    il ne fallait pas directement l'utiliser car sinon il ne trouve aucune table "personne"
    Ah....

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    ok ça marche, encore merci pour ta réponse !

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

Discussions similaires

  1. [AC-2010] Relations entre tables dépendante d'une variable
    Par 8e8eClo dans le forum Modélisation
    Réponses: 26
    Dernier message: 21/03/2012, 10h36
  2. Réponses: 5
    Dernier message: 09/05/2011, 11h35
  3. Requete sur une table dépendant d'une autre
    Par CardinalJo dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/02/2009, 19h59
  4. 3 tables liées mais une seule ligne de retour ?
    Par seb_perl dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/01/2007, 12h20

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