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 :

Double jointure, léger problème.


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Double jointure, léger problème.
    Voila j'ai un petit problème de jointure avec mysql, avec Oracle je crois que cela fonctionne bien mais avec Mysql ce n'est pas le cas et je ne sais pas trop comment le résoudre.

    Voila j'ai 2 tables :

    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
    18
    19
    20
    21
    22
    23
    24
    mysql> DESCRIBE film;
    +-------------+----------------+------+-----+---------+----------------+
    | Field       | Type           | Null | Key | Default | Extra          |
    +-------------+----------------+------+-----+---------+----------------+
    | id          | int(11)        | NO   | PRI | NULL    | auto_increment | 
    | url         | varbinary(255) | YES  |     | NULL    |                | 
    | dir         | varbinary(255) | YES  |     | NULL    |                | 
    | title       | varchar(255)   | YES  |     | NULL    |                | 
    | synopsis    | varchar(255)   | YES  |     | NULL    |                | 
    | sortiedate  | int(11)        | YES  |     | NULL    |                | 
    | createdate  | int(11)        | YES  |     | NULL    |                | 
    | realisateur | int(11)        | YES  |     | NULL    |                | 
    | actor1      | int(11)        | YES  |     | NULL    |                | 
    | actor2      | int(11)        | YES  |     | NULL    |                | 
    | actor3      | int(11)        | YES  |     | NULL    |                | 
    | actor4      | int(11)        | YES  |     | NULL    |                | 
    | actor5      | int(11)        | YES  |     | NULL    |                | 
    | length      | int(11)        | YES  |     | NULL    |                | 
    | quality     | int(11)        | YES  |     | NULL    |                | 
    | resolution  | varchar(30)    | YES  |     | NULL    |                | 
    | codec       | varchar(255)   | YES  |     | NULL    |                | 
    | hash        | varchar(32)    | YES  |     | NULL    |                | 
    +-------------+----------------+------+-----+---------+----------------+
    18 rows in set (0.00 sec)
    et une autre table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mysql> DESCRIBE personnes;
    +-------+--------------+------+-----+---------+----------------+
    | Field | Type         | Null | Key | Default | Extra          |
    +-------+--------------+------+-----+---------+----------------+
    | id    | int(11)      | NO   | PRI | NULL    | auto_increment | 
    | name  | varchar(255) | YES  |     | NULL    |                | 
    +-------+--------------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    le problème est le suivant si je fait une jointure entre personnes.id et film.realisateur je n'est pas de problème mais si je veux ajouter une jointure entre personnes.id et film.actor1 alors automatiquement cela ne marche plus.

    En gros suis_je obligé de créer une table réalisateur et une table pour chaque acteur ? je suis presque sûr que non mais je sais pas comment faire.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Sans entrer dans les détails, voici ce qu je ferais :

    table film
    id
    titre
    etc...

    Exemple :
    1, film 1

    table type_personne
    id
    type

    Exemple :
    1,acteur
    2,réalisateur
    3,producteur

    table personne
    id
    nom

    Exemple :
    1,dupond
    2,durand
    3,toto

    table film_personne
    id_film
    id_personne
    id_type

    Si le film 1 a dupond comme réalisateur, dupond et durand comme acteurs, et toto comme producteur, cette dernière table contiendra :
    1,1,2
    1,1,1
    1,2,1
    1,3,3

    Avec cette structure, tu peux mettre autant d'acteurs que tu le souhaites. Et si demain tu veux ajouter le(s) scénariste(s), il suffit de créer un nouveau type de personne.

  3. #3
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Tu peux faire ceci si tu ne veux pas tout casser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT A1.name AS acteur1, A2.name AS acteur2, A3.name AS acteur3, A4.name AS acteur4, A5.name AS acteur5, R.name AS realisateur
    FROM films
    JOIN personnes AS A1 ON films.actor1 = A1.id
    JOIN personnes AS A2 ON films.actor2 = A2.id
    JOIN personnes AS A3 ON films.actor3 = A3.id
    JOIN personnes AS A4 ON films.actor4 = A4.id
    JOIN personnes AS A5 ON films.actor5 = A5.id
    JOIN personnes AS R ON films.realisateur = R.id
    WHERE films.id = 1
    @+
    cadou

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

Discussions similaires

  1. [AC-2007] Problème double jointure
    Par tiyo76 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 15/05/2013, 13h23
  2. Problème requête double jointure
    Par alex2746 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2011, 11h35
  3. Problème double jointure
    Par julien1451 dans le forum MySQL
    Réponses: 1
    Dernier message: 26/02/2010, 00h30
  4. [jointure]requete possible de double jointure entre 2 tables
    Par akira_le_gaucher dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/05/2004, 15h03
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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