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 :

Selectionner plusieurs colonnes avec distinct


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 54
    Points
    54
    Par défaut Selectionner plusieurs colonnes avec distinct
    Bonjour à tous,

    Cela fait quelques jours que j'essaie tout ce que je peut, mais nada, j'y arrive pas... peut etre pourriez-vous me guider...?
    Est il possible de récuperer dans une table d'autre collones en plus de celle que ramène DISTINCT?
    De plus, est il possible de ne choisir que celle ou la collone date est la plus élevée?

    je m'explique

    SELECT DISTINCT IdTitre( et les collones liées à cet enregistrement) FROM Matable WHERE Madate(est la plus élevée de toutes les dates ayant l'id ramené par DISTINCT)

    je sais que c'est assez brumeux ( le mot est faible) mais je débute...
    Soyez donc indulgent siouplé

    merci d'avance pour votre aide...

  2. #2
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 576
    Points
    576
    Par défaut
    Quel est le serveur que tu utilise ?

  3. #3
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par godjojo Voir le message

    SELECT DISTINCT IdTitre( et les collones liées à cet enregistrement) FROM Matable WHERE Madate(est la plus élevée de toutes les dates ayant l'id ramené par DISTINCT)

    je sais que c'est assez brumeux ( le mot est faible) mais je débute...
    Soyez donc indulgent siouplé

    merci d'avance pour votre aide...
    tu veux faire une condition sur une fonction d'agrégation, si j'ai bien compris.
    "le having est le where du group by"


    petit exemple, quasiment équivalent à un distinct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select date, client_id, count(*) from matable
    group by date, client_id
    having count(*)>1 -- pour avoir que les lignes doublonnées

    grosso modo avec ce que je comprends de ta requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select distinct IdTitre, max(date) from matable
    group by  IdTitre
    having max(date)=date

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Grand merci pour votre aide...

    Je travaille en local, avec easyphp, mysql...
    j'ai appliqué ta méthode

    //
    grosso modo avec ce que je comprends de ta requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT DISTINCT IdTitre, max(date) FROM matable
    GROUP BY  IdTitre
    HAVING max(date)=date
    Je ne comprenais pas encore le GROUP BY...
    Donc, si je comprends bien

    "selectionne uniquement les Idtitre , et les dates les plus hautes de ces idtitres de matable en groupant par les idtitres qui ont la date maximum égale à ...???... (heu la je pige pas...)

    j'ai essayé, mais la j'ai eu

    champ "datepost" inconnu dans having clause

    je ne comprends pas bien le having en fait

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 392
    Points
    28 392
    Par défaut
    La requête proposée par Mathusalem ne fonctionne qu'avec certains SGBD qui ne respectent pas la syntaxe du langage SQL telle qu'elle a été normaliée par l'ANSI.

    Le modèle de la requête que tu cherches à écrire est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT  t1.* 
    FROM    matable AS t1 
    WHERE   EXISTS 
            (   SELECT  1 
                FROM    matable AS t2 
                WHERE   t1.id_groupe = t2.id_groupe 
                HAVING  t1.col_date = MAX(t2.col_date) 
            ) 
    ;
    Je te laisse l'adapter à ton cas...

    En précisant le SGBD que tu utilises et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
    Règles du forum Langage SQL à lire par tous

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    compris... je travaille cela de suite...
    un grand merci pour ton aide...

    je travaille avec easyphp, apache et mysql...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 100
    Points : 54
    Points
    54
    Par défaut
    Fabuleux, c'était la bonne méthode...
    Un grand merci pour votre aide précieuse à tous...

    A bientot sur le forum...

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

Discussions similaires

  1. Selectionner une colonne avec des cellules fusionnées
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/09/2007, 07h47
  2. Selection de plusieurs colonnes avec une zone de liste
    Par vinzeffect dans le forum Access
    Réponses: 3
    Dernier message: 20/01/2007, 22h51
  3. plusieurs colonnes avec opérateur IN
    Par inluvwitiou dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 16/03/2006, 13h29
  4. Requête à plusieurs colonnes avec la fonction COUNT
    Par zigune dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/11/2004, 10h43
  5. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 15h22

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