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

 MySQL Discussion :

Probleme sur un SELECT DISTINCT


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Par défaut Probleme sur un SELECT DISTINCT
    J'ai deux tables :

    table1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_site	site 
    1	manche
    2	orne
    3	calvados
    table2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    id_info  site_id    heure
    1	1	12:00
    2	3	15:00
    3	3	16:00
    4	2	11:00
    Je voudrais obtenir les départements distincts avec l'heure la plus récente soit

    manche 12:00
    orne 15:00
    calvados 16:00

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT site,heure FROM table1,table2 WHERE site_id=id_site GROUP BY site
    mais cela me rend :

    manche 12:00
    orne 15:00
    calvados 15:00

    Merci à tous pour votre aide

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    1) Tu utilises GROUP BY mais il manque le MAX dans le SELECT pour avoir la dernière heure.

    2) Les jointures s'écrivent depuis 20 ans avec l'opérateur JOIN, il serait temps de s'y mettre !

    3) Utiliser GROUP BY et DISTINCT, c'est ceinture et bretelles, c'est un pléonasme !
    DISTINCT ne sert ici à rien.

    4) Dès qu'il y a plus d'une table dans une requête, prend la bonne habitude d'utiliser des alias.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t1.site, MAX(t2.heure) AS derniere_heure
    FROM table1 t1
    INNER JOIN table2 t2 ON t2.site_id = t1.id_site
    GROUP BY t1.site
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Par défaut
    Nous y sommes presque mais j'ai encore un probleme

    La table1 est :



    J'ai rajouté un champ nom à table2



    Je veux obtenir :

    calvados tata 16:00
    manche toto 12:00
    orne mimi 11:00

    C'est à dire que selectionne tout l'enregistrement id_info= 3 pour le calvados car son heure est maximale


    or hélas j'obtiens avec cette requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT t1.site,nom, MAX(t2.heure) AS derniere_heure
    FROM table1 t1
    INNER JOIN table2 t2 ON t2.site_id = t1.id_site
    GROUP BY t1.site
    le résultat ci_dessous



    Dans la table2, la requete prends pour calvados (site_id=3) le max dernière heure de l'enregistrement Numéro 3 et
    le nom de l'enregistrement Numéro 2

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Maintenant qu'on a l'heure max de chaque site, on peut récupérer le nom correspondant à cette heure max :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT t1.site, t2.nom, tmp.derniere_heure
    FROM 
    (
    	SELECT site_id, MAX(heure) AS derniere_heure
    	FROM table2
    	GROUP BY site_id
    ) tmp
    INNER JOIN table2 t2
    	ON t2.site_id = tmp.site_id
    	AND t2.heure = tmp.derniere_heure
    INNER JOIN table1 t1 ON t1.id_site = tmp.site_id
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

Discussions similaires

  1. Probleme sur requete "Select for update"
    Par claudge dans le forum DB2
    Réponses: 13
    Dernier message: 17/09/2013, 17h55
  2. Petit probleme sur un select case
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/12/2012, 17h49
  3. [Debutant] Probleme sur un select
    Par Flamby38 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/01/2008, 14h57
  4. Probleme (simple) sur un select distinct
    Par phaby dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/04/2006, 13h38
  5. [ODBC] Probleme sur un SELECTED de SELECT avec PHP
    Par G.D.O dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 27/03/2006, 15h44

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