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

PostgreSQL Discussion :

Requête imbriquée avec deux "rangements par ordre de"


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut Requête imbriquée avec deux "rangements par ordre de"
    Bonjour,

    Depuis plusieurs jours, j'essaie de trouver une solution simple, c'est -à-dire en une seule requête, à un problème de order by ou group by ou autres. Prenons un exemple pour expliquer ce que je recherche. Au départ, nous avons une table avec 2 champs : date et user. Comment ranger par ordre décroissant de date, puis pour chaque par ordre alphabétique des user.

    Table de départ :
    2010-01-01 | Michel
    2010-01-04 | Michel
    2010-01-04 | Michel
    2010-01-02 | Michel
    2010-01-04 | Vincent
    2010-01-04 | Vincent
    2010-01-02 | Suzanne
    2010-01-03 | Suzanne
    2010-01-03 | Bertrand
    2010-01-04 | Bertrand

    Résultat attendu :
    2010-01-04 | Bertrand
    2010-01-03 | Bertrand
    2010-01-04 | Michel
    2010-01-04 | Michel
    2010-01-02 | Michel
    2010-01-01 | Michel
    2010-01-04 | Vincent
    2010-01-04 | Vincent
    2010-01-03 | Suzanne
    2010-01-02 | Suzanne

    En gros rangement par ordre décroissant de date, puis pour chaque date quand on rencontre un user on affiche tous les enregistrements de ce user par ordre décroissant de date...
    Facile, hein !!!

    En tout cas, merci pour votre aide.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    Merci vmolines pour votre réponse, mais cela ne correspond pas à ce que je recherche.
    En effet en reprenant la table de départ en faisant un double order by, j'obtiendrai :
    2010-01-04 | Bertrand
    2010-01-04 | Michel
    2010-01-04 | Michel
    2010-01-04 | Vincent
    2010-01-04 | Vincent
    2010-01-03 | Bertrand
    2010-01-03 | Suzanne
    2010-01-02 | Michel
    2010-01-02 | Suzanne
    2010-01-01 | Michel

    Alors que le résultat attendu est :
    2010-01-04 | Bertrand
    2010-01-03 | Bertrand
    2010-01-04 | Michel
    2010-01-04 | Michel
    2010-01-02 | Michel
    2010-01-01 | Michel
    2010-01-04 | Vincent
    2010-01-04 | Vincent
    2010-01-03 | Suzanne
    2010-01-02 | Suzanne

    A nouveau merci quand même...

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... ORDER BY Nom, Date DESC
    Non ?

    Et attention DATE est un mot clé SQL donc à éviter pour nommer des objets de la base de données.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Par défaut
    Non, toujours pas.
    Je ne pense pas qu'un simple order by soit la réponse. Cela doit certainement passer par une requête imbriquée.

    Pour info, sous PostGreSQL, date n'est pas un mot réservé et heureusement...

    A nouveau merci de ton aide.

  6. #6
    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
    Regarde du côté de ROW_NUMBER ou autres fonctions de fenêtrage.
    L'idée qui me vient à l'esprit étant de classer les dates distinctes et de leur affecter un ROWNUM dans une sous requête puis de faire une jointure sur la date et d'utiliser ce ROWNUM pour l'ordre.

    Pas le temps de creuser davantage.

    Mais j'ai l'impression que tu cherches à afficher les données d'une certaine manière, ce qui est plutôt le boulot du programme utilisateur que du SGBD. Cela s'appelle de la cosmétique.
    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 !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/10/2007, 22h09
  2. [SQL] Requête SQL avec 3 tables liées par la même relation
    Par lenstoi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/08/2007, 23h32
  3. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41
  4. [MySQL] Erreur SQL 1064 : Requête imbriquée avec jointure !
    Par patchankito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 31/01/2006, 10h37
  5. [DB2] Requête imbriquée avec opérateur IN
    Par JFDelges dans le forum Langage SQL
    Réponses: 23
    Dernier message: 21/12/2005, 11h27

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