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 dure, dure...


Sujet :

PostgreSQL

  1. #1
    gds
    gds est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Requète dure, dure...
    Bonjour,

    TABLE supports
    id_support serial
    type_support varchar
    prix_support float4
    nb_supports int2
    id_message int4
    date_prix_support timestamp

    J'aimerai afficher le contenu de la table support avec uniquement les id_message qui ont le date_prix le plus récent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT id_message, MAX(date_prix_support)
    FROM supports
    GROUP BY id_message
    Cette requète me donne donc bien le bon résultat, sauf que j'aimerai afficher tout les champs de cette table dans le résultat (id_support, type_support,...)
    Je ne peux pas mettre tous les champs dans le group by puisqu'il y en a qui ne sont pas identiques dans les résultats.

    Comment pourrai-je m'y prendre ??
    Merci

  2. #2
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Points : 154
    Points
    154
    Par défaut
    Salut,

    En faisant en requête imbriqué tu devrait pouvoir t'en sortir
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select * 
    from supports 
    where id_message = (SELECT id_message, MAX(date_prix_support)
                                    FROM supports
                                    GROUP BY id_message)
    Voilà ça devrait être bon

  3. #3
    gds
    gds est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    yoyopi, ça ne fonctionne pas étant donné que la sous requète renvoi plusieurs lignes et plusieurs colonnes au id_message =

    Une autre idée ??

  4. #4
    gds
    gds est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    En fait j'ai fini par trouver alors je donne ma réponse si ça intéresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT *
    FROM supports
    WHERE (id_message, date_prix_support) IN (
       SELECT id_message, MAX(date_prix_support)
       FROM supports
       GROUP BY id_message)

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

Discussions similaires

  1. requête where durée=2
    Par Invité dans le forum Requêtes
    Réponses: 6
    Dernier message: 27/07/2013, 17h50
  2. Requête qui dure longtemps sans résultat
    Par SALMHSN dans le forum PL/SQL
    Réponses: 13
    Dernier message: 03/05/2011, 12h04
  3. Les taches dures dures a killer ?
    Par bigbernie dans le forum Windows XP
    Réponses: 7
    Dernier message: 24/12/2008, 09h23
  4. Requête Longue durée sur un Serveur
    Par faressam dans le forum Administration
    Réponses: 3
    Dernier message: 10/07/2008, 09h42
  5. Requête Heure Durée de travail
    Par Villars dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/08/2006, 18h41

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