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 :

aide sur une requete avec jointures


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut aide sur une requete avec jointures
    Bonjour,

    J'aimerai un petit coup de main sur une requête que je n'arrive pas à concevoir.

    voici la structure de ma base expliquée avec des mots.

    un module est composé de chapitres (n<=>n)
    un chapitre est composé de séquences (n<=>n)
    une séquence est composée de briques (n<=>n)

    Précisions :
    "rankbrique" est l'emplacement de la "brique" dans la "séquence"
    "ranksequence" est l'emplacement de la "séquence" dans le "chapitre"
    "rankchapitre" est l'emplacement du "chapitre" dans le "module".

    il peut y avoir plusieurs mêmes chapitres dans un module
    il peut y avoir plusieurs mêmes séquences dans un chapitre
    il peut y avoir plusieurs mêmes briques dans une séquence

    voici mes tables

    + ------------ +
    | table briques |
    + ------------ +
    | idbrique
    | nombrique
    + ------------ +

    + ---------------------- +
    | sequences_has_briques |
    + ---------------------- +
    | id
    | idbrique
    | idsequence
    | rankbrique
    + ---------------------- +

    + --------------- +
    | table sequences |
    + --------------- +
    | idsequence
    | nomsequence
    + --------------- +

    + ----------------------- +
    | chapitres_has_sequence |
    + ----------------------- +
    | id
    | idchapitre
    | idsequence
    | ranksequence
    + ---------------------- +

    + --------------- +
    | table chapitres |
    + --------------- +
    | idchapitre
    | nomchapitre
    + --------------- +

    + ----------------------- +
    | modules_has_chapitres |
    + ----------------------- +
    | id
    | idmodule
    | idchapitre
    | rankchapitre
    + ---------------------- +

    + --------------- +
    | table modules |
    + --------------- +
    | idmodule
    | nommodule
    + --------------- +


    j'aimerai lister toutes les briques d'un module classées par rankchapitre, rankséquence, rankbrique

    Merci par avance pour votre aide précieuse.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Qu'as-tu commencé comme requête ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Qu'as-tu commencé comme requête ?
    Bonjour Philippe, merci pour ta réponse.

    J'essaye des requetes depuis plusieurs jours sans succes...

    j'ai essayé notamment celle-ci
    mais j'ai un depassement de "Maximum execution time"

    (ma plus grosse table *briques* fait une quarantaine de lignes seulement)

    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
    25
    26
    27
    28
    29
    30
    31
    32
    SELECT 
    b.idbrique,
    shb.rank as rankbrique,
    s.nomsequence,
    s.idsequence,
    chs.rank as ranksequence,
    c.nomchapitre,
    c.idchapitre,
    mhc.rank as rankchapitre,
    m.idmodule, 
    m.nommodule
     
    FROM (
    briques as b,
    sequences_has_briques as shb,
    sequences as s,
    chapitres_has_sequences as chs,
    chapitres as c,
    modules_has_chapitres as mhc,
    modules as m)
     
    INNER JOIN modules_has_chapitres on modules_has_chapitres.idchapitre=mhc.idchapitre
     
    INNER JOIN chapitres_has_sequences on chapitres_has_sequences .idsequence=chs.idsequence
     
    INNER JOIN sequences_has_briques on sequences_has_briques .idbrique=shb.idbrique
     
    where m.idmodule=1 
     
    group by b.idbrique
     
    order by rankchapitre desc, ranksequence desc, rankbrique desc

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Tu commence par faire un FROM avec toutes les tables sans conditions de jointure puis tu fais des jointures internes de tables avec elles-mêmes ! Normal que tu aies des problèmes !
    Une révision sur les jointures s'impose !

    Voici ta requête récrite avec la bonne syntaxe :
    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
    SELECT b.idbrique,
      shb.rank AS rankbrique,
      s.nomsequence,
      s.idsequence,
      chs.rank AS ranksequence,
      c.nomchapitre,
      c.idchapitre,
      mhc.rank AS rankchapitre,
      m.idmodule, 
      m.nommodule
    FROM briques AS b
    INNER JOIN sequences_has_briques AS shb ON b.idbrique = shb.idbrique
      INNER JOIN sequences AS s ON s.idsequence = shb.idsequence
        INNER JOIN chapitres_has_sequences AS chs ON chs.idsequence = s.idsequence
          INNER JOIN chapitres AS c ON c.idchapitre = chs.idchapitre
        INNER JOIN modules_has_chapitres AS mhc ON mhc.idchapitre = c.idchapitre
          INNER JOIN modules AS m ON m.idmodule = mhc.idmodule
    WHERE m.idmodule = 1
    ORDER BY mhc.rankchapitre DESC, chs.ranksequence DESC, shb.rankbrique DESC
    Au passage, le GROUP BY est inutile puisque tu n'as pas de fonction de calcul dans le SELECT.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Effectivement, des grosses lacunes oui....

    Merci infiniment pour la requete c'est exactement ça !
    Merci aussi pour les explications limpides!

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

Discussions similaires

  1. [MySQL] souci sur une requete avec jointure
    Par fey dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/09/2008, 11h11
  2. aide sur une requete avec distinct
    Par WELCOMSMAIL dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/12/2007, 13h29
  3. [MySQL] Cherche aide pour une requete avec jointure
    Par nasbe26 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 29/09/2007, 11h44
  4. Besoin d'aide sur une requete avec jointure et MAX()
    Par droog dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/07/2007, 18h23
  5. Pb sur une requete avec jointure droite
    Par crashyear dans le forum Langage SQL
    Réponses: 3
    Dernier message: 06/02/2007, 08h06

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