|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 24 ![]() |
bonjour à tous,
Je souhaite exécuter une requête mysql qui trie les résultats comme expliqué ci-dessous : J'ai une table qui se nomme 'Historique' dans laquelle est stocké un historique complet d'interventions sur différents matériels. Dans cette table j'ai entre autres les colonnes suivantes : Localisation, Type matériel, Type intervention et date intervention. Exemple : Localisation | Typemat | Typeinter | Dateinter lieu1| mat1 | vérif | 18/08/2009 lieu1| mat1 | vérif |19/04/2006 lieu1 | mat1 |vérif | 19/02/2003 lieu1 | mat1 | révis | 14/01/2008 lieu1 | mat1 | révis | 14/02/2011 lieu1 | mat1 | révis |17/08/2005 lieu1 | mat2 | vérif | 18/08/2009 lieu1 | mat2 | vérif | 19/04/2006 lieu2 | mat1 | vérif |19/02/2003 lieu2 | mat1 | vérif | 14/01/2008 lieu2 | mat3 | révis | 14/02/2011 lieu2 | mat3| révis | 17/08/2005 Quand je fais une extraction de ces données dans php, je souhaiterais que ma requête ne prenne en compte seulement la date la plus récente en fonction du type d'intervention. Dans cette exemple je voudrais que ma requête sorte donc les lignes suivantes : Localisation | Typemat | Typeinter | Dateinter lieu1 | mat1 | vérif | 18/08/2009 lieu1 | mat1 | révis | 14/02/2011 lieu1 | mat2 | vérif | 18/08/2009 lieu2 | mat1 | vérif |14/01/2008 lieu2 | mat3| révis | 14/02/2011 Voilà, merci pour votre aide |
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Salut
Pour classer / ordonner des données ça se fait avec ORDER BY. Comme : Code :
Comme "Typeinter" -> vérif, révis, etc ... Le classement sera fait selon l'alphabet : Un a sera avant un b pour un ordre ascendant par exemple. Théoriquement, il aurait fallut des identifiants, (un champ id_typeinter par exemple), et une table à part pour y mettre les différents Typeinter (champ : id_typeinter, nom par exemple). Faut espérer aussi que les formats de date ici sont justes pour exemple, c'est à dire que dans la Bdd c'est bien un champ de type DATE et un format comme 2009-08-18 (au lieu de 18/08/2009).
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mai 2008 Messages : 24 ![]() |
D'accord, merci pour ta réponse, effectivement ça risque de compliquer la chose.
sinon si je fais un "order by date desc", y'a-t-il une fonction me permettant en sql ou en php de demander que les répétitions soient ignorées. comme ça sql va chercher mes interventions en les classant par date décroissante et si j'ai des localisations, typemat et typeinter qui se sont similaires il ne prendrait que la première date trouvée et ignorerait les autres. merci |
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Citation:
Exemple : Code sql :
C'est un peu normal aussi, car si on regroupe, ça sous entend quelles seraient les mêmes. En faite, si on prend exemple avec un regroupement sur la "Localisation", dans ton exemple on a 8 lieu1, ça va éliminer 7 et donc en conserver qu'un. La ligne conservée devrait être la 1ère qui a été insérée (la plus ancienne en quelque sorte). Idem pour le lieu2. C'est après que l'ordre va s'appliquer sur les 2 lignes retenues (lieu1 et lieu2) selon la date (si on classe par date). Je ne sais pas si tu vois. Mais le mieux c'est de faire des essais. Post la requête au besoin.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||
|
|
00
|
|
|
#5 | |
|
Expert Confirmé
![]() ![]() |
Bonjour,
Citation:
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Citation:
C'est bon à savoir. Merci pour l'info.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#7 | |
|
Membre expérimenté
![]() |
Salam ;
Citation:
si vos vous interventions sont quotidiennes , je vous propose de faire des requêtes paramétrées avec param: date sa donne plus de vie et de flexibilité a votre application... |
|
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 24 ![]() |
J'ai testé, ça me sort un résultat mais pas ce que je recherche.
Je me suis résilié à faire plus simple donc j'exporte ma table en CSV et sous excel je fais un tri décroissant par date et je renvoi tout dans mysql (à l'origine mes données venaient d'un fichier excel). Ainsi quand je fais un GROUP BY Concatener, vu que le premier élément trouvé est gardé en référence, il tombe forcément sur la date la plus récente. Code :
En tout cas encore merci pour votre aide à tous |
||
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 728 ![]() |
Citation:
Mais le problème que tu rencontre est essentiellement lié au fait que tout ce trouve dans une seule et unique table, alors qu'une base de données ça se conçoit, en plus, ça ne se conçoit pas n'importe comment. Mettre tout dans une seule table ça n'a pas de sens. Si on a des rubriques, et que pour 1 rubrique il y a des articles qui sont associés, ça débouche sur 2 tables. C'est le BABA dans ce domaine là, et cela qui fera qu'on pourra exploiter convenablement et facilement le SQL. Si à la source le fichier excel n'est pas correctement structuré en plusieurs tables/colonnes, donc toutes les données dans 1 seule tableau comme tu le montre, alors le travail risque fort d'être long de créer cette Bdd convenablement. Si cette fois ce fichier excel est bien structuré convenablement, il doit avoir moyen de le faire évoluer, des faire des tableaux croisés dynamique de la même manière qu'une base de donnée. Excel intègre d'ailleurs une notion de base de données. Tout devrait pouvoir ce faire à ce niveau, ce qui au bout facilitera l'export de ces données vers une Bdd comme MySQL. Peut être d'ailleurs qu'au lieu d'exploiter Excel, il serait préférable d'utiliser Access, ce qui faciliterait encore plus l'export vers MySQL normalement. Faudrait même voir l'usage, car rien ne dit ici que MySQL soit la Bdd la plus adaptée. Faut voir. Toujours est t-il qu'il y a une erreur à mon sens quelque part dans la façon de faire. De mon coté, j'ai tout simplement arrêter de me creuser la tête sur ton problème pour la simple raison que j'estime que c'est une pure perte de temps de tenter de trouver une solution sur une table quelque peu "fourre tout". (je ne dis pas ça méchamment bien entendu, juste un constat.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
|
00
|
|
|
#10 | ||
|
Invité de passage
![]() Inscription : mai 2008 Messages : 24 ![]() |
Si ça peut aider quelqu'un on m'a donné la solution à mon problème :
Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com