Requête spécifique

Fermé
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 - Modifié par maxireussite le 12/02/2017 à 00:11
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 - 13 févr. 2017 à 08:24
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

maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
Modifié par maxireussite le 12/02/2017 à 01:40
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
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
12 févr. 2017 à 11:39
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
yg_be Messages postés 23401 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 décembre 2024 1 557
12 févr. 2017 à 11:56
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
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717 > yg_be Messages postés 23401 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 décembre 2024
12 févr. 2017 à 12:27
Si tu poses cette question. .. C'est que tu dois reprendre les cours concernant les bases de données relationnelles....
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
12 févr. 2017 à 15:40
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
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5
12 févr. 2017 à 22:01
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
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
12 févr. 2017 à 23:50
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
maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020 5 > jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024
13 févr. 2017 à 01:22
On 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
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717 > maxireussite Messages postés 372 Date d'inscription jeudi 10 mai 2007 Statut Membre Dernière intervention 11 mars 2020
13 févr. 2017 à 08:24
Je 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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 23401 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 décembre 2024 Ambassadeur 1 557
12 févr. 2017 à 11:08
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