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 :

SELECT DISTINCT avec tri sur un autre champ que celui du distinct


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut SELECT DISTINCT avec tri sur un autre champ que celui du distinct
    Bonjour,

    j'ai un problème. Il me faudrait faire un select distinct sur une table, mais pouvoir trier le résultat sur un autre champs que celui choisi pour le distinct.

    Par exemple, pouvoir faire :

    SELECT DISTINCT nomphoto FROM photos

    mais il me faudrait pouvoir trier le résultat sur le champs dateCréationPhoto qui n'est donc pas dans mon résultat.

    Comment faire ?

  2. #2
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 637
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 637
    Points : 6 805
    Points
    6 805
    Par défaut
    Bonjour,

    Si ton champ de datecréation photo est dans la table PHOTO, il suffi de faire un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORDER BY datecretaionphoto;
    @+

  3. #3
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut
    Merci pour ta réponse. En fait, le champ datecretaionphoto est bien dans ma table photo. Mais comme il n'est pas inclus dans ma requête SELECT DISTINCT nomPhoto FROM photo, SQL ne veut pas me trier le résultat sur la colonne datecretaionphoto.

    Mais pour la suite de mon code, il faudrait qu'il le résultat soit doans l'ordre, c'est à dire, classé sur ce le champ date de création.

    j'ai essayé de mettre le ORDER BY, masi pas moyen ... il ne me le veut pas

  4. #4
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    S'il est nécessaire, pourquoi tu ne l'inclus pas dans ta requête ?

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Un "SELECT DISTINCT nomPhoto FROM Photo" vous renverra toutes les noms de photos distincts que vous avez dans votre table. Si vous vous donnez la peine de faire un DISTINCT, c'est que plusieurs enregistrements ont la même valeur pour nomPhoto. Or chacune de ces valeurs peut être liées à plusieurs dates de création différentes : laquelle doit être prise en compte ?

    En résumé, ce que vous essayez de faire ne fonctionne pas car ça n'a pas de sens

    Un petit exemple en images :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE TABLE Photo (
    nomPhoto VARCHAR2 (32),
    dateCreationPhoto DATE);
     
    INSERT INTO Photo VALUES ('Plage', '08/11/2006');
    INSERT INTO Photo VALUES ('Plage', '10/11/2006');
    INSERT INTO Photo VALUES ('Montagne', '03/11/2006');
     
    SQL> SELECT DISTINCT NomPhoto FROM Photo;
     
    NOMPHOTO
    --------------------------------
    Plage
    Montagne
    Quelle date doit être associée à la Photo 'Plage' ?

    Essayez plutôt de travailler sur une requête du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> SELECT nomPhoto, MIN(dateCreationPhoto) AS MinDate, MAX(dateCreationPhoto) AS MaxDate
      2    FROM Photo
      3   GROUP BY nomPhoto
      4   ORDER BY MinDate;
     
    NOMPHOTO                         MINDATE  MAXDATE
    -------------------------------- -------- --------
    Montagne                         03/11/06 03/11/06
    Plage                            08/11/06 10/11/06

  6. #6
    Membre régulier Avatar de Stephane_br
    Inscrit en
    Septembre 2005
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 222
    Points : 83
    Points
    83
    Par défaut
    Merci beaucoup.

    En fait, c'est bien cela que je voulais. ça marche avec la seconde requète "GROUP BY". C'est vrai que c'est un peu bizare comme requète mais c'est ce qui m'est demandé et la base étant figée, il fallait que je puisse faire cette sélection.

    merci beaucoup

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/12/2012, 13h20
  2. Réponses: 1
    Dernier message: 23/12/2009, 17h41
  3. Réponses: 0
    Dernier message: 02/06/2009, 20h28
  4. Trier des lignes sur un autre champ que celui du groupe
    Par tatayoyo dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 28/01/2009, 20h37
  5. Réponses: 9
    Dernier message: 23/12/2005, 13h41

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