|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Didier Inscription : mars 2011 Messages : 14 ![]() |
bonjour,
j'ai 2 requetes qui fonctionnent séparément, je souhaite les mettre en une seule requete, le resultat de la premiere requete select est ok, mais le second est erronée, pouvez vous m'aider, je suppose que ça vient de la syntaxe, surement aussi, vous rendrez plus efficace mon script! suis débutant merci! le resultat ci dessous de la colonne 6 à 10 répète le meme n° de dde indéfiniment. Code :
A_Valider Date_A_Valider Valide Date_Valide Ecart DdeValidee Date_Validee DdeEnCours Date_Encours Ecart1 65678 2011-01-12 65678 2011-04-01 79 66890 2011-03-17 66890 2011-02-03 42 66373 2011-01-24 66373 2011-03-17 52 66890 2011-03-17 66890 2011-02-03 42 65228 2011-01-05 65228 2011-02-08 34 66890 2011-03-17 66890 2011-02-03 42 |
||
|
|
00
|
|
|
#2 | ||||
![]() ![]() |
Ta requête est un catalogue de ce qu'il ne faut pas faire !
![]() Pour commencer, évite la guerre des étoiles ! Ensuite, les jointures s'écrivent depuis 1992 avec l'opérateur JOIN ! Les sous-requêtes enchaînées de la sorte sont contre-performantes. Dans tes deux sous-requêtes principales (tableValidee et tableEncours), tu n'as pas de condition de jointure entre les instances de ta table_statut_demande. Du coup, tu fais un produit cartésien entre les deux instances, ce qui te donne nombre de lignes de la table au carré ! Les apostrophes inversées ajoutées par phpMyadmin autour des noms de colonnes et de tables sont généralement inutiles. Si j'ai bien compris l'ensemble, pour ta première sous-requête : Code :
Code :
Je comprends mal l'utilité des colonnes A_Valider et Valide puisque cela doit être indiqué par Num_Statut non ? La structure de la table et une explication de ce qu'est censée faire cette requête nous aiderait à la comprendre.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Didier Inscription : mars 2011 Messages : 14 ![]() |
je me doutais bien que ma requete n'etait pas conforme, mais j'apprends
j'ai donc rajouter la deuxieme à la premiere, mais le resultat est identique au precedent, il me sors x fois les memes enregistrements! Le but de ces requetes est de mesurer l'ecart de date entre les differents statuts correspondants à des demandes de travaux Num_demande est le numero de la demande, num_statut = 1 >A_Valider, =2 Validé, =5 En cours. j'affiche les colonnes des dates afin de controler la véracité des résultats. j'aimerais aussi séparer par une colonne vide,ici 'Motif' les colonnes de la premiere requete avec celles de la deuxieme. Voici la requete que j'ai tentée: Code :
et voici le resultat toujours erroné pour la seconde: Num_demande Date_A_Valider Date_Valide Ecart Motif Num_demande Date_Encours Date_Validee Ecart2 Motif 65678 2011-01-12 2011-04-01 79 NULL 66890 2011-02-03 2011-03-17 42 NULL 66373 2011-01-24 2011-03-17 52 NULL 66890 2011-02-03 2011-03-17 42 NULL 65228 2011-01-05 2011-02-08 34 NULL 66890 2011-02-03 2011-03-17 42 NULL ********************************************************* merci encore pour votre aide
|
||
|
|
00
|
|
|
#4 |
![]() ![]() |
Apparemment, tu n'es pas allé lire l'article sur les jointures !
Pas le temps à cette heure de développer.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 |
|
Invité de passage
![]() Didier Inscription : mars 2011 Messages : 14 ![]() |
j'ai bien lu les infos sur les jointures, je les comprends bien quand il s'agit de plusieurs tables, mais lorsqu'on extrait les infos d'une meme table, pas si évident. Doit on considérer qu'on fait la meme chose que s'il y en vait plusieurs donc en disant que :
table_statut_demande d1 INNER JOIN table_statut_demande d2 INNER JOIN table_statut_demande d3 je vais y travailler, pouvez vous me dire aussi si on peut mettre un timeout sur la requete afin de limiter le temps de calcul sur le serveur, car lors de mes essais, j'arrive à le planter , donc je ne travaille que le soir apres les heures, si je pouvais mettre un timeout de 10s, ça serait cool merci |
|
|
00
|
|
|
#6 | |||||||
![]() ![]() |
Citation:
Code :
Citation:
Si j'ai correctement interprété ta requête, regarde si cette forme convient : Code :
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||||
|
00
|
|
|
#7 |
|
Invité de passage
![]() Didier Inscription : mars 2011 Messages : 14 ![]() |
j'avais commencé à ajouter la deuxieme requete, mais vous avez été plus rapide que moi !
je l'ai donc lancée, mais le resultat attendu ne correspond pas à mes besoins. En fait j'avais travaillé en sous requete pour essayer de sortir 2 tableaux l'un pour mesurer les ecarts entre les dates a valider-validée selon statut=1 et 2 puis le seconde pour les ecarts entre date validée et encours, statut= 2 et 5 Le but serait de sortir les resultats sur une seule requete au lieu de lancer les 2 separements (j'en ai une 3eme à rajouter) afin d'exporter le resultat en CSV;mais peut etre on ne peut pas realiser ce dont j'ai besoin: quand je lance la premiere requete seule, je trouve 141 enregistrements quand je lance la deuxieme seule, il y en a 573 si je compile les deux en copiant collant votre modif, en fait on filtre les resultats sur les deux requetes au lieu de les retrouver avec chacune le nombre d'enregistrements souhaitées, je ne trouve plus que 95 enregistrements |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com