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

Langage SQL Discussion :

trier par date max d'un client


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut trier par date max d'un client
    Bonjour,

    Je cale complètement sur la requete que je dois faire. (open office base) .

    J'ai une liste de clients (id_cl) qui subissent différentes mise à jour. Pour cela, mon formulaire rajoute à chaque mise à jour un id automatique (id) et je saisis la date de mise à jour (date).

    J'essaye en vain de créer une requete qui me permet d'obtenir la dernière mise à jour de chaque id_cl (soit une ligne par cl_id retournant 'id', 'cl_id' et 'date') (pas les autres dates donc, juste la derniere par clients)

    Je n'arrive qu'à avoir toutes les 'date' trier.
    Pouvez vous m'aidez ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Peut tu donner un exemple de ta table (colonnes et valeurs) avec quelques valeur et le résultat voulu sur cet exemple, ca seras plus parlant

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    pas de probleme

    id _____cl_id_____date
    120_____01_____30/11/07
    121_____02_____20/11/07
    122_____01_____23/01/08
    123_____01_____01/05/05
    124_____03_____02/02/02

    Je n'arrive pas a obtenir un resultat sous la forme

    cl_id_____date
    01_____23/01/08
    02_____20/11/07
    03_____02/02/02


    Soit obtenir la denière mise a jour de chaque client, par tri décroissant date (la date la plus récente en premier)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Essaye ca je pense que ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT cl_id,MAX(date) AS date FROM table GROUP BY cl_id ORDER BY date DESC;

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Eric93 : merci de ton aide, cependant, je me retourve avec un beau message d'erreur d'open office Base.

    J'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "cl_id", MAX( "date" ) AS "date" FROM "Mise à jour" GROUP BY "cl_id" ORDER BY "date" DESC
    "Mise à Jour" étant le nom de ma table.

    Le message
    La commande SQL suivante est à la source de l'erreur*:

    SELECT "cl_id", MAX( "date" ) AS "date" FROM "Mise à jour" GROUP BY "cl_id" ORDER BY "date" DESC

  6. #6
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    je ne connais pas Open Office Base, mais certains SGBD ne reconnaissent pas dans la clause ORDER BY les alias définis dans la clause SELECT.
    Tu peux donc essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT   cl_id,
             MAX([date])  AS MaxDate
    FROM     [Mise à jour]
    GROUP BY cl_id
    ORDER BY MAX([date]) DESC;

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    cela ne fonctionne pas non plus, j'ai peut etre faire une faute de frappe en rajouter les "" obligatoire sur Base.
    Je connaissais Access à l'époque (en 1999-200), je m'y remets via open office, mais je galère, les order by, group by, etc n'ont pas l'air de fonctionner

    SELECT "cl_id",
    MAX(["date"]) AS "MaxDate"
    FROM ["Mise à jour"]
    GROUP BY "cl_id"
    ORDER BY MAX(["date"]) DESC

  8. #8
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 335
    Points
    335
    Par défaut
    Si tu es obligé d'ajouter des guillemets, supprime les crochets avec lesquels j'avais encadré certains champs/tables.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Si tu remet MAX dans l'ORDER BY, tu n'as plus besoin de l'alias.

    Dans ma version j'ai mis un alias date (même nom que la colonne), c'était peut-être ca qui va pas, donc essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT cl_id,
             MAX("date")
        FROM "Mise à jour"
    GROUP BY "cl_id"
    ORDER BY MAX("date") DESC;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT cl_id,
             MAX("date") as "max_date"
        FROM "Mise à jour"
    GROUP BY "cl_id"
    ORDER BY "max_date" DESC;
    Si ca marche toujours pas essaye de récupérer le message d'erreur, t'en sauras surement plus, je ne connais pas non plus Open Office Base

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Eric et J1 : merci !!

    Cela fonctionne, pas a 100% mais cela fonctionne !
    Seul probleme, le format de la date qui apparait : il me mets en résultat 39468, 39467, etc
    Le champ date est bien au format date dans ma table pourtant. Cela peut venir d'ou ?

    Je vais chercher et ensuite intégrer cette requete dans ma requete général (elle dois me sortir d'autre chose, que j'avais pas intégrer ici pour pas compliqué l'histoire ! )

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Dis nous au moins quelle syntaxe étais la bonne

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    oups !

    celle de j1 et la tienne ! (en rajoutant mes "")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT cl_id,
             MAX("date")
        FROM "Mise à jour"
    GROUP BY "cl_id"
    ORDER BY MAX("date") DESC;

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Et celle-ci avec l'alias, c'est quand même mieu, ca evite de faire 2 fois MAX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT cl_id,
             MAX("date") AS "max_date"
        FROM "Mise à jour"
    GROUP BY "cl_id"
    ORDER BY "max_date" DESC;

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Eric93 Voir le message
    Et celle-ci avec l'alias, c'est quand même mieu, ca evite de faire 2 fois MAX :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT cl_id,
             MAX("date") AS "max_date"
        FROM "Mise à jour"
    GROUP BY "cl_id"
    ORDER BY "max_date" DESC;
    elle fontionne mais me donne toujours un format de date bizarre.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    personne ne voir q'ou cela peut venir cette date qui change de format en résultat de la requete ?

Discussions similaires

  1. SQL trier par date
    Par yousfi_2007 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/05/2008, 11h14
  2. [Criteria][Order] trier par date
    Par CPI_en_mousse dans le forum Hibernate
    Réponses: 2
    Dernier message: 04/07/2007, 14h33
  3. [Paradox] Trier par date
    Par Fabs dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/11/2006, 19h41
  4. trier par date
    Par tounsi dans le forum Oracle
    Réponses: 1
    Dernier message: 23/02/2006, 16h46
  5. [JSP] Trier par date une liste de fichier en JSP
    Par Total dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 21/02/2006, 15h38

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