Requête spécifique

Bonjour,

En regardant le tableau joint je souhaite partir de la table 1 et obtenir la requête
qui en découle.

Quelle requête pourrait me donner ce résultat ?

Merci de votre aide.

cdlt.

5 réponses

  1. NHenry, merci de me plomber mon post. J'ai 53 ans, il ne s'agit pas de faire un exercice, mais de trouver la solution à une interrogation.
    Je fais de la programmation pas vraiment par besoin, mais par plaisir. Je ne fais qu'adapter des codes.
    Je n'ai pas trouvé de code à adapter répondant à mon interrogation. C bien là mon problème, je ne sais pas quel script peut donner ce résultat.

    Si vous regardez mes autres post, il m'arrive d'avoir des codes bien précis pour lesquelles je demande de l'aide, là ce n'est pas le cas.
    0
    1. Modérateur
      Bonjour

      Avant de continuer... dis toi qu'il y a un problème. ..... au niveau de la structure de ta table ....
      Si demain faut ajouter une cinquième ou sixième matière comment feras tu ??
      Idem pour les "niveaux"

      Tu devrais avoir une table pour les matières
      Une pour les niveaux
      Et une qui fasse le lie entre les deux.
      0
      1. Contributeur Ambassadeur
        bonjour, que contiendraient les tables matieres et niveaux? est-ce utile d'avoir des tables uniquement pour les noms des matières et des niveaux?
        0
      2. Modérateur
        @yg_beSi tu poses cette question. .. C'est que tu dois reprendre les cours concernant les bases de données relationnelles....
        0
    2. Modérateur
      La structure de tes tables devrait être :


      La requête devenant ainsi :
      SELECT MNI.id
             ,N.libelle as NIVEAU
             ,M.libelle as MATIERE
             ,I.id as ID_INTERV
      FROM matiere_niveaux_interv MNI
      LEFT JOIN niveaux N  ON N.id = MNI.id_niveau
      LEFT JOIN matieres M  ON M.id = MNI.id_matiere
      LEFT JOIN intervenants I  ON N.id = MNI.id_intervenant
      


      NB: Avec cette structure de table, il te sera facilement possible d'ajouter de nouvelles matières ou de nouveaux niveaux ... sans avoir à remodifier ta structure...
      Tout passant par le CONTENU des tables (et non leur structure)......et que tu n'auras pas besoin non plus de venir modifier la requête en question une fois faite ... (contrairement à celle proposée par yg_be )

      Tu remarqueras aussi que c'est vachement plus simple pour obtenir les données telles que tu les voulais.....

      Bref..Pour le coup... oublie complètement la "bidouille" proposée par yg_be .... car même si elle fonctionne peut-être pour ce cas bien précis... tu seras, de toutes façons, très vite limité ....

      0
      1. Bjr, je ne peux pas structurer ma table comme ma requête. La table1 me sert à recueillir et afficher des informations, sachant que bien entendu, ce sont les ID de matières et de niveaux qui sont rentrés.
        0
        1. Modérateur
          Si tu ne veux pas changer la structure de tes tables ... tant pis pour toi. Mais dis toi bien quelle est fausse... mal pensée. ...
          En plus... pourquoi ne pourrais tu pas modifier TES tables ?
          0
        2. @jordane45On doit mal se comprendre. J'ai exactement la structure en couleur que tu me proposes...
          Je ne peux pas changer la table matiere_niveau_interv parce qu'elle recueille des informations telles quelles à afficher après.
          0
        3. Modérateur
          @maxireussiteJe ne comprend plus en effet
          Si tu as bien la structure que je te propose... quelle est donc cette "table 1" que tu nous montres dans ton message initiale ? Et sur quoi bloques tu exactement ??
          0
      2. Contributeur Ambassadeur
        bonjour,
        je suppose qu'il s'agit d'une requête sql, malgré que la question soit dans le forum php.
        je pense que la structure de la base de données n'est pas optimale, ta table aurait dû être structurée comme tu présentes ta requête.
        cependant, je propose la requête suivante, si tu choisis de ne pas changer tes structures:
        select id, matiere1 as matieres, niveau1 as nivaux, intervenant_id
        where matiere1 is not null
        union all
        select id, matiere2 , niveau2, intervenant_id
        where matiere2 is not null
        union all
        select id, matiere3 , niveau3, intervenant_id
        where matiere3 is not null
        union all
        select id, matiere4 , niveau4, intervenant_id
        where matiere4 is not null
        -1