IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Tri avec des données identiques [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Tri avec des données identiques[résolu]
    Bonjour à tous.
    Je voudrais trier une table de données température qui est sous cette forme:

    Date Heure Temp ext
    08/10/2007 15:45:00 16.20
    08/10/2007 15:55:00 15.20
    08/10/2007 16:25:00 16.20
    09/10/2007 16:30:00 16.20
    09/10/2007 15:50:00 14.10
    09/10/2007 16:00:00 16.10
    09/10/2007 16:05:00 12.10
    10/10/2007 16:20:00 16.10
    10/10/2007 16:35:00 16.10
    10/10/2007 16:45:00 14.10
    11/10/2007 16:00:00 16.10
    11/10/2007 16:05:00 16.10
    11/10/2007 16:20:00 16.10
    12/10/2007 16:35:00 16.10
    12/10/2007 16:45:00 17.10
    etc.......

    Il peut y avoir des températures identiques à la même date ou aux mêmes heures un jour différent.

    Ce que je voudrais obtenir, c'est par exemple les plus hautes températures de chaque jour mais une seule fois par jour.
    Un truc du genre:
    08/10/2007 16.20 (à 16:25:00)
    09/10/2007 16.10 (à 16:00:00)

    Pouvoir extraire aussi les 10 jours avec les plus hautes températures sur une année avec date et heure.

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Je ne sais pas quelle est ta base de données mais essaye la commande GROUP BY. Si c'est Mysql tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT DATE, MAX(TEMPEXT) FROM TEMPERATURE
    GROUP BY DATE LIMIT 10

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci batataw de m'aiguiller.

    On avance mais les heures ne sont pas correctes...

    Voici mon code:
    $result = mysql_query("SELECT date,MAX(temp_ext),horaire,temp_ext FROM data GROUP BY date LIMIT 10");
    J'obtiens ceci:
    Date Heure Temp ext
    09/10/2007 09:50:00 16.20
    10/10/2007 00:00:00 14.70
    11/10/2007 00:00:00 15.80
    12/10/2007 00:00:00 14.80
    13/10/2007 00:00:00 16.20

    Avec cette requete:
    $result = mysql_query("SELECT * FROM data ORDER BY temp_ext DESC LIMIT 6");
    Date Heure Temp ext
    09/10/2007 15:45:00 16.20
    09/10/2007 15:55:00 16.20
    09/10/2007 16:25:00 16.20
    09/10/2007 16:30:00 16.20
    13/10/2007 13:20:00 16.20
    13/10/2007 13:30:00 16.20


    Il peut y avoir des températures identiques à la même date ou aux mêmes heures un jour différent (ex 10 fois la même température dans le même jour...) et les heures ne sont pas bonnes.

    Merci d'avance

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Essaye de me filer un exemple concret de ce que tu veux en sortie, j'essayerai de t'aiguiller. Peux-tu me donner un tableau avec des explications. L'histoire des heures m'échappe.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour ton aide.

    j'ai une table du genre:
    Date Heure Temp ext
    08/10/2007 15:45:00 16.20
    08/10/2007 15:55:00 15.20
    08/10/2007 16:25:00 16.20
    09/10/2007 16:30:00 16.20
    09/10/2007 15:50:00 14.10
    09/10/2007 16:00:00 16.10
    09/10/2007 16:05:00 12.10
    10/10/2007 16:20:00 16.10
    10/10/2007 16:35:00 16.10
    10/10/2007 16:45:00 14.10
    11/10/2007 16:00:00 16.10
    11/10/2007 16:05:00 16.10
    11/10/2007 16:20:00 16.10
    12/10/2007 16:35:00 16.10
    12/10/2007 16:45:00 17.10
    etc.......
    ce sont des mesures de température toutes les 5 minutes toute l'année.

    Ce que je souhaite obtenir, c'est un tri de ces données pour obtenir par exemple les 10 plus hautes températures.
    Le prob est qu'il y a des températures identiques dans une même date à des heures différentes.
    On voit par ex dans le tableau ci-dessus que le 11/10/2007, il y a plusieurs fois la même T° à des heures différentes.

    Je voudrais extraire le max pour chaque jour avec l'heure (max) ex: le 09/10/2007 à 16:30:00 il faisait 16.20°c
    Et si je saisis bien la méthode, je pourrais ainsi extraire tout un tas de données (Max, Min,temps dans une plage de T° etc....).

    J'espère avoir été assez clair dans mes explications.

    Merci d'avance.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Ok, il faut que tu ajoutes un tri descendant sur ta colonne time pour avoir la
    derniere du jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DATE, TIME, MAX(TEMPEXT) FROM TEMPERATURE
    GROUP BY DATE  
    ORDER BY TIME DESC
    LIMIT 10

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    query = "SELECT date, MAX(temp_ext),horaire FROM sept_07 GROUP BY date ORDER BY horaire DESC LIMIT 10";
    me donne...
    Maxi du 01/09/2007 est de 22.30 a 00:00:00
    Maxi du 02/09/2007 est de 21.60 a 00:00:00
    Maxi du 03/09/2007 est de 17.10 a 00:00:00
    Maxi du 04/09/2007 est de 17.80 a 00:00:00
    Maxi du 05/09/2007 est de 17.40 a 00:00:00
    Maxi du 06/09/2007 est de 20.30 a 00:00:00
    Maxi du 07/09/2007 est de 20.10 a 00:00:00
    Maxi du 08/09/2007 est de 22.60 a 00:00:00
    Maxi du 09/09/2007 est de 20.00 a 00:00:00
    Maxi du 10/09/2007 est de 19.70 a 00:00:00

    pas de tri sur les heures...
    c'est peut etre pas possible, dans ce cas je vais laisser tomber les heures...ça m'embête mais bon...

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    C'est étrange, la requête devrait marcher, essaye de vérifier les heures pour une journée. Peux-tu poster, les relevés pour une journée.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par batataw Voir le message
    C'est étrange, la requête devrait marcher, essaye de vérifier les heures pour une journée. Peux-tu poster, les relevés pour une journée.
    J'ai mis un exemple de table ici

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    Ya pas de tri parce que toutes tes heures sont a 00:00.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT date, MAX(temp_ext),horaire FROM sept_07 GROUP BY date ..."
    Il va chercher pour chaque jour la temperature maximale, mais il par exemple pour un jour donné la temperature maximale c'est 16° et que tu avai 16° à 8h00 et a 20h00 la requete te renverra le premier enregistrement trouvé, donc 8h00. Il faut que tu decide quelle heure tu veux garder dans le cas où la temperature maximale se repete (l'heure la plus tot, la plus tard?)

    Pour le LIMIT 10 aussi je crois que tu ne le voulais que si tu fais la recherche sur toute l'année non? (obtenir les 10 jours les plus chauds de l'année) Donc si tu fais une recherche par mois (sept_07) enleves-le

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Salut Kahya et merci d'avance

    Citation Envoyé par kahya Voir le message
    Ya pas de tri parce que toutes tes heures sont a 00:00.
    exemple pour un jour donné la temperature maximale c'est 16° et que tu avai 16° à 8h00 et a 20h00 la requete te renverra le premier enregistrement trouvé, donc 8h00.
    mais justement, ce que je ne comprend pas c'est que cette requete me renvoi un horaire faux pour la temp max,(ni le 1er ni le dernier) à 00:00, c'est impossible... alors que dans la table les heures existent bien...

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    et quand tu tappes la requete directement sous phpMyAdmin c'est pareil? C'est pas une histoire de format de date?

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par kahya Voir le message
    et quand tu tappes la requete directement sous phpMyAdmin c'est pareil? C'est pas une histoire de format de date?
    Oui pareil...
    Tu as certainement raison car la date est sous la forme JJ/MM/AAAA en type text car mes données proviennent d'un fichier csv et ne sais pas si on peu remettre la date dans un autre format ?

    Il y a un dump de ma table un peu plus haut.

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    le champs ou tu range tes heures dans ta table est de quel type?

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par kahya Voir le message
    le champs ou tu range tes heures dans ta table est de quel type?
    type time

    mon fichier csv

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Essaye de mettre tes colonnes au bon format sinon je pense qu'avec une sous requete tu peux y arriver.

  17. #17
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Voila ce que je propose change le type de la date en datetime....
    et refait les memes requetes...........et quand tu enregistreras ce sera avec l'heure à l'instant t. tu n'auras plus besoin du champ horaire........

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par batataw Voir le message
    Essaye de mettre tes colonnes au bon format sinon je pense qu'avec une sous requete tu peux y arriver.
    Voila c'est ce que j'ai fais et je m'en sors comme ça.
    Encore merci à tous du coup de main.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Extraire des données d'un fichier Xml avec des balises identiques
    Par Danieldu54 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/03/2011, 20h45
  2. INNER JOIN avec des données de sélection
    Par EK1_ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/05/2006, 18h40
  3. [VBA-A]Remplir une textbox avec des données de tables.
    Par cuicui08 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/03/2006, 10h28
  4. [datagrid]lier avec des données
    Par Alex35 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 11/12/2005, 10h10
  5. Créer du xml avec des données Oracle
    Par Baumont dans le forum Oracle
    Réponses: 3
    Dernier message: 23/11/2005, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo