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

Requêtes MySQL Discussion :

GROUP BY qui ne donne pas les derniers enregistrements [MySQL-5.0]


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 7
    Points
    7
    Par défaut GROUP BY qui ne donne pas les derniers enregistrements
    Bonjour,

    depuis le début de la semaine je lutte avec une requête, je voudrais avoir les derniers enregistrements de la table grouper, voici la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE IF NOT EXISTS `domotic_sensor` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `module_id` int(11) NOT NULL,
      `sonde_type` int(10) NOT NULL,
      `sonde_valeur` decimal(10,2) NOT NULL,
      `sonde_unit` int(11) NOT NULL,
      `valeur_temp` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3132
    j'ai trouvé une requete qui fonctionne mais sature le server mysql en s'exécutant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  s.id, s.sonde_valeur, s.sonde_unit, s.sonde_type, s.module_id, s.valeur_temp AS date, m.module_nom, m.module_type, m.module_ref, m.module_emplacement , u.symbole, u.nom, u.nom_lien, t.type_id, t.nom AS nom_sensor FROM domotic_sensor AS s 
    LEFT JOIN domotic_sensor_module AS m ON s.module_id = m.module_ref 
    LEFT JOIN sensor_unit AS u ON s.sonde_unit = u.unit_id
    LEFT JOIN sensor_type AS t ON s.sonde_type = t.type_id 
    WHERE s.valeur_temp in (select max(valeur_temp) from domotic_sensor GROUP BY module_id, sonde_unit, sonde_type)
    AND TO_DAYS(NOW()) - TO_DAYS(s.valeur_temp) < '1'
    Affichage des lignes 0 - 13 ( 14 total, Traitement en 171.7634 sec)

    lorsque je fais une requete simple genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT s . * , MAX( valeur_temp ) 
    FROM domotic_sensor AS s
    GROUP BY module_id, sonde_unit, sonde_type
    LIMIT 0 , 30
    je n'ai pas les derniers enregistrements, il m'affiche les première ligne de la table.


    merci de votre aide ::

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    vous cherchez les dernières lignes par rapport à quel groupement ? par module ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par punkoff Voir le message
    bonjour,


    vous cherchez les dernières lignes par rapport à quel groupement ? par module ?
    Bonjour Punkoff, je voudrais groupé par module_id, sonde_unit, sonde_type enfaite je voudrais obtenir le tableau de l'image une mais avec une meilleurs requete

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    essayez ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT  s.id, s.sonde_valeur, s.sonde_unit, s.sonde_type, s.module_id, s.valeur_temp AS date, m.module_nom, m.module_type, m.module_ref, m.module_emplacement , u.symbole, u.nom, u.nom_lien, t.type_id, t.nom AS nom_sensor 
    FROM domotic_sensor AS s 
    inner join (select module_id, sonde_unit, sonde_type, max(valeur_temp) as max_temp 
           from domotic_sensor where valeur_temp > CURDATE()
    	   GROUP BY module_id, sonde_unit, sonde_type) as b on b.module_id=s.module_id and b.sonde_unit = s.sonde_unit and b.sonde_type = s.sonde_type and b.max_temp = s.valeur_temp
    LEFT JOIN domotic_sensor_module AS m ON s.module_id = m.module_ref 
    LEFT JOIN sensor_unit AS u ON s.sonde_unit = u.unit_id
    LEFT JOIN sensor_type AS t ON s.sonde_type = t.type_id 
    WHERE s.valeur_temp > CURDATE()

    Si trop lent fournissez un explain de la requête : http://dev.mysql.com/doc/refman/5.6/en/explain.html

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    oula Affichage des lignes 0 - 13 ( 14 total, Traitement en 0.1588 sec) ! je fais 1/2 test mais ça m'a l'air nickel ! merci beaucoup

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    super merci Punkoff !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/12/2011, 16h52
  2. Réponses: 2
    Dernier message: 09/12/2011, 10h23
  3. [PDO] Insert préparé qui n'insert pas les données
    Par le nOoB dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 22/04/2011, 02h15
  4. Réponses: 6
    Dernier message: 16/05/2008, 09h04
  5. Rnd qui ne donne pas que des bonnes valeurs
    Par kubito dans le forum Access
    Réponses: 2
    Dernier message: 08/10/2004, 18h00

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