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 :

Tri des resultats avec critères


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Tri des resultats avec critères
    Désolé si le titre n'est peut être pas très adapté a ma demande.

    Je fais une requête sur une table RDV pour avoir les 10 derniers rdv.
    Sachant que chaque RDV est associé à une personne par RDV.userID.
    Je souhaite obtenir les résultats toujours dans l'ordre croissant par dateRDV mais regrouper par user.
    Il y a moyen de faire ça dans la requête ?

  2. #2
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 285
    Points
    7 285
    Par défaut
    Bonjour,

    essaye un truc du genre (user croisant, date croissante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT 
        user,
        rdv
    FROM RDV
    GROUP BY 1, 2
    ORDER BY 1, 2;
    ou (date croissante, user croissant):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT 
        user,
        rdv
    FROM RDV
    GROUP BY 1, 2
    ORDER BY 2, 1;
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Un GROUP BY sans fonction de regroupement, ç'est équivalent à un DISTINCT. En l'ocurrence ici ça ne sert pas à grand chose.

    Je souhaite obtenir les résultats toujours dans l'ordre croissant par dateRDV mais regrouper par user.
    Tu veux dire plutôt "ordonné par user" ? C'est à dire la liste des rendez-vous du user 1 puis ceux du user 2... ?

    Le ORDER BY suffit.

    Et si tu ne veux que les dix derniers rendez-vous pour chaque user, inspire toi de ce qui est dit dans cet extrait des "Sources MySQL".
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Et si tu ne veux que les dix derniers rendez-vous pour chaque user, inspire toi de ce qui est dit dans cet extrait des "Sources MySQL".
    C'est ça qu'il me fallait, merci CinePhil pour ton aide.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Voici comment s'écrit une telle requête avec les fonctions OLAP de la norme SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM  (SELECT *, ROW_NUMBER() OVER(PARTITION BY USER ORDER BY RDV DESC) AS N
            FROM RDV) AS T
    WHERE N <= 10
    Si votre SGBDR ne gère pas ces fonction, lisez le papier que j'ai écrit à ce sujet, vous y trouverez votre bonheur : http://sqlpro.developpez.com/article...clause-window/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Ca fonctionne sur MySQL ça ?

Discussions similaires

  1. affichage des resultats avec fortran
    Par saida29 dans le forum Fortran
    Réponses: 1
    Dernier message: 14/04/2014, 10h49
  2. tri sur listbox avec critère de selectin listbox multiselection
    Par jijie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/06/2012, 07h58
  3. trié des date avec une boucle for each
    Par alex santus dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/09/2009, 11h00
  4. Pb pour copier des lignes avec critères
    Par vally74 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/05/2008, 11h20
  5. Mauvais tri des String avec des accents
    Par lbreuillard dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 23/09/2005, 12h21

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