[Résolu] 3 requêtes SQL en une seule? - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Résolu] 3 requêtes SQL en une seule? (/showthread.php?tid=4956) Pages :
1
2
|
RE: 3 requêtes SQL en une seule? - Ter Rowan - 01-07-2010 hum en mettant un alias sur les retours de la requête de _who, en y intégrant en plus "Identifiant" et "origine", orgine ayant deux sources possibles valeur = 1 pour les données de la table résultat et 2 pour les données de la table exigences tu vas obtenir un résultat du type : identifiant orginie col1 col2 col3 col4 .... de la tu fais une seconde requête basée sur le résultat de la première (si tu es en access c'est natif, enfin ça l'était sur les versions que j'ai utilisées il y a quelques années) ou éventuellement tu fais une requete qui intègre celle de who : select col1 col2 .... from leRestultatDeLaRequeteDe_who order by identifiant, origine du coup tu as la requête qui t'organise les données (la mienne) et celle qui génère les données, celle de _who l'intérêt de séparer les deux, c'est que tu peux casser l'extracteur de données (rajouté autre chose que des exigences, etc...) sans pour autant modifier ta requête de "restitution" RE: 3 requêtes SQL en une seule? - orditeck - 01-07-2010 J'aurais une erreur SQL autour du premier FROM.... mais je ne la vois pas.
Peut être sauriez-vous la trouver mieux que moi! RE: 3 requêtes SQL en une seule? - Ter Rowan - 01-07-2010 attention tu es sous access, donc la version sql est... particulière vérifie qu'il connaisse "join", ou mieux, voit comment il fait une jointure RE: 3 requêtes SQL en une seule? - orditeck - 01-07-2010 (01-07-2010, 04:44 PM)Ter Rowan a écrit : attention tu es sous access, donc la version sql est... particulière Merci du conseil, j'ai beaucoup de notes sur Access et il prend effectivement UNION et JOIN. MySQL, de son côté, me retourne Code : #1064 - You have an error in your SQL syntax; check the manual RE: 3 requêtes SQL en une seule? - Ter Rowan - 01-07-2010 arf alors des idées comme ça est ce que l'alias numérique est possible sous mysql parce que finalement même si ça marche sous access rien ne dit que ça marche sous mysql et du coup l'erreur est peut être ailleurs j'avais fait un paquet de requete avec access, la première chose à faire est de se dire que ce n'est pas de l'informatique (même si, au final ça en est) je ne peux donc que te conseiller de réaliser tes requêtes en étant guidé par access (ie tu prends son éditeur , tu sélectionne tes champs, etc...) et après que chaque requête fonctionne, construis une requête union via sql en copiant collant les deux requêtes. sinon concernant la requête (mais je me trompe peut être) Code : SELECT à quoi sert le dernier join (tblGranulatExigences) ? tel que je le vois tu vas ramener autant de ligne C20/C14/C10 qu'il y a d'enregistrements exigences pour analyse = 1 alors que la jointure granulos j1Infos devrait suffire Code : UNION n'oublie pas de mettre les mêmes alias (20 14 10) dans cette seconde partie RE: 3 requêtes SQL en une seule? - orditeck - 01-07-2010 (01-07-2010, 05:18 PM)Ter Rowan a écrit : est ce que l'alias numérique est possible sous mysql parce que finalement même si ça marche sous access rien ne dit que ça marche sous mysql et du coup l'erreur est peut être ailleurs En effet, c'était le problème pour MySQL. Access me renvoie encore un erreur à propos d'un FROM, sans donner plus de détails! Mais pour sa part, Access prend les alias numérique. (01-07-2010, 05:18 PM)Ter Rowan a écrit : j'avais fait un paquet de requete avec access, la première chose à faire est de se dire que ce n'est pas de l'informatique (même si, au final ça en est) je ne peux donc que te conseiller de réaliser tes requêtes en étant guidé par access (ie tu prends son éditeur , tu sélectionne tes champs, etc...) et après que chaque requête fonctionne, construis une requête union via sql en copiant collant les deux requêtes. Très bonne idée.. je n'y avais même pas pensé tellement Access est chiant à utiliser (01-07-2010, 05:18 PM)Ter Rowan a écrit : sinon concernant la requête (mais je me trompe peut être) Hum, je ne suis pas certain de te suivre. Je dois d'abord interroger Infos pour avoir le # d'exigence, et ensuite aller chercher les données de ladite exigence à l'aide de ce numéro. (01-07-2010, 05:18 PM)Ter Rowan a écrit : n'oublie pas de mettre les mêmes alias (20 14 10) dans cette seconde partie Ça je ne l'oublierai pas c'est sur! Mais je veux d'abord que la requête fonctionne RE: 3 requêtes SQL en une seule? - Ter Rowan - 01-07-2010 je reprend dans la partie 1 de l'union le select sert a ramener des données de tblGranulatsResultats du coup, (mais je ne connais pas le modèle) soit il manque une jointure entre tblGranulatsResultats et tblGranulatInfos (et dans ce cas la jointure avec tblGranulatExigences ne sert probablement à rien ? filtre supplémentaire ?) soit il manque une jointure entre tblGranulatsResultats et tblGranulatExigences de même dans la deuxième requete tu fais une jointure sur tblGranulatExigences tblGranulatInfos tblGranulatExigences par contre il n'y a aucune clause entre le premier tblGranulatExigences et les deux autres tables (dont une seconde fois tblGranulatExigences ) du coup tu vas te retrouver avec plein de fois le contenu de tblGranulatExigences après je suis pas sûr d être clair (la journée fut dure) et je suis loin d être expert donc mes mots ne sont pas forcément les bons concernant le n'oublie pas des alias, ton union ne pourra pas marcher je le crains sans les alias, c'est pas juste pour le côté esthétique que je disais cela RE: 3 requêtes SQL en une seule? - orditeck - 01-07-2010 (01-07-2010, 05:52 PM)Ter Rowan a écrit : soit il manque une jointure entre tblGranulatsResultats et tblGranulatInfos (et dans ce cas la jointure avec tblGranulatExigences ne sert probablement à rien ? filtre supplémentaire ?) Pour faire un lien entre tblGranulatsResultats et tblGranulatExigences, je dois passer par tblGranulatInfos (voir premier post) Cependant, pour la deuxième requête, je crois également qu'un seul JOIN suffit, donc:
(01-07-2010, 05:52 PM)Ter Rowan a écrit : concernant le n'oublie pas des alias, ton union ne pourra pas marcher je le crains sans les alias, c'est pas juste pour le côté esthétique que je disais cela Oui, j'avais compris. Mais encore faudrait-il que ma requête fonctionne syntaxiquement avant... RE: 3 requêtes SQL en une seule? - orditeck - 01-07-2010 Je crois bien avoir réussi ma requête! (ça reste à confirmer) Voilà de quoi elle a l'air:
Merci beaucoup à vous!!!!! |