Merci beaucoup Aecy, vit longtemps pour nous
Bonjour chers amis, je fais face à un problème de sql et j'ai vraiment besoin qu'on viennent en aide.
Voici la liste des tables
Je voulais ensuite effectuer une requete sql qui va permettre de récupérer les informations de la table de la table tbl_affectation_aff et celle de la tbl_composer_com dans une seule requete et c'est par là ou se trouve le problème parce que le résultat obtenu est une redondance des informations.
voici la requête que j'ai tapé:
La requette ci-dessus affiche une serie des données répétée. Je souhaite obtenir un résultat sans redondance. Je suis sûr et certain que je me suis égaré dans la requete ou je ne dois pas composer ma requete de cette façon. Je viens vers vous pour trouver la solution
15 réponses
Avec plaisir !
Merci infiniment Aecy pour m'avoir orienter, la requete que vous m'aview proposé marche très bien, elle répond parfaitement au souci que j'avais
Impeccable ! J'en suis ravis
Bonne soirée à toi et bon dev
Hello, a ce que je vois tu utilises des jointures implicites avec WHERE, ce qui n'est pas top. Tu devrais plutot utiliser des jointures explicites avec JOIN
Hello Aecy, si ça ne vous dérange pas, c'est possible de faire juste un petit exemple? histoire de bien reveiller mon esprit. Merci pour votre intervention
Après avoir lu et comprendre certaines choses à travers le lien que vous m'avez suggeré, voici quelques résultats (J'ai modifié la nommination de tables histoire de ne pas avoir trop de chose à écrire mais logiquement, les choses restent les mêmes )
les requetes maintenant
- La requete ci-dessous permet d'obtenir les informations de toutes les classes composées de filières se trouvant dans une école d'un site donné
SELECT composer.co_id AS code, class.c_name AS class, composer.co_alias AS Alias, filiaire.f_name AS filiaire, ecole.e_name AS ecole, site.s_name AS site FROM composer LEFT JOIN (class CROSS JOIN filiaire CROSS JOIN site CROSS JOIN ecole) ON ( class.c_id = composer.c_id AND filiaire.f_id = composer.f_id AND ecole.e_id = composer.e_id AND site.s_id = composer.s_id ) voici le résultat de la requête
- La requete ci-dessous permet d'obtenir les informations de tous les utilisateurs qui sont affectés dans une école d'un quelconque site
voici le résultat de cette requête
- Maintenant, l'idée est de composer une requete qui va creer la relation entre user et la classe
en se référant aux données de la table affecter et de la table composer.
indirectement, les user seront représentés par la table affecter et
les classes par la table composer.
la requête ci-dessous permet d'obtenir toutes les informations à partir de la table appartenir mais lorsque nous essayons de créer la jointure
entre les clés secondaires, le résultat obtenu est une redondance, et c'est ça mon plus grand souciSELECT * FROM appartenir JOIN affecter ON appartenir.a_id = affecter.a_id JOIN composer ON appartenir.co_id = composer.co_id
Tu pourrais utiliser DISTINCT pour éliminer les lignes identiques dans les résultats ou si tu as besoin de données uniques mais que DISTINCT ne fonctionne pas comme tu l'attends, des sous-requêtes ou des agrégations (comme GROUP BY) peuvent t'aider.
Vérifie bien aussi que tes clés sont correctes dans la base de donnée, on sait jamais mais ça peut arriver.
Justement, j'ai eu à utiliser la commande DISTINCT, en réalité, le problème ne se trouve pas à son niveau. quand tu regardes la table appartenir elle permet d'enregistrement des informations qui proviennent d'autres tables affecter etcomposer, ces dernières, elles, aussi ont des clés etrangères d'autres tables (user, ecole, etc.), pendant la jointure des autres tables qui immigrents dans les tables affecter etcomposerposent de pproblèmes
Et avec plusieurs JOIN ça ne fonctionne pas ?
ça ne fonctionne pas en tout cas, à moins que vous ayez une méthode pour simplifier les choses
Pour le coup ca fait beaucoup de JOINTURE mais je peux essayer de regarder à t'écrire quelque chose sur téléphone, je n'ai plus fait de requete SQL depuis des lustres ! Avec les ORM que nous disposons ^^
Je ne garanti aucun résultat, lorsque je debug j'aime avoir le retour de chaque étape pour trouver le soucis ^^ (ni la qualité de la requete, je suis trop rouiller en requete SQL, faudrait que je refasse des projets sans framework ahah).
Ok, merci beaucoup pour les réactions, je vais essayer de taper cette req et voir ce que ça va donner
Avec plaisir, tiens nous au courant de ton avancée
Merci, je vais le faire dès ce soir