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 :

DISTINCT sur 2champs ou plus


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut DISTINCT sur 2champs ou plus
    Bonjour,

    J'ai un problème avec la fonction DISTINCT.
    Je vous montre avec exemple car c'est plus parlant.

    Base :

    Champ1 | Champ2 | Champ3
    1 12/05/2008 14:22:55 3
    4 12/05/2008 14:21:55 6
    1 12/05/2008 14:20:55 8

    Je voudrai faire un 'DISTINCT' seulement du champ1. Jusqu'a là pas de problème il suffie d'introduire un 'DISTINCT' et hop, mais je veux en plus classer avec 'ORDER BY' la colonne Champ2, donc je suis obligé de rajouté 'SELECT DISTINCT Champ1, Champ2'.
    Ce qui a pour effet qu'il me prend le champ1 et champ2 avec DISTINCT.

    IE : SELECT DISTINCT Champ1, Champ2 FROM Table WHERE Champ2 BETWEEN GETDATE() -1 AND GETDATE() ORDER BY Champ2 ASC;

    en gros, je n'ai pas que le Champ1 qui est DISTINCT mais aussi le Champ2 ( obligé de l'ajouté pour 'ORDER BY' )

    Comment faire pour que je puisse avec un DISTINCT seul sur le Champ1, mais en meme temps faire un ORDER BY sur le Champ2 pour pouvoir classer le Champ1 par date la plus récente...

    Car si je met pas le Champ2 pres de DISTINCT le ORDER BY ne marche pas !!

    SELECT DISTINCT Champ1 FROM Table WHERE Champ2 BETWEEN GETDATE() -1 AND GETDATE() ORDER BY Champ2 ASC;

    > java.sql.SQLException: ORDER BY items must appear in the select list if SELECT DISTINCT is specified.


    Merci de votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 048
    Points
    53 048
    Billets dans le blog
    6
    Par défaut
    DISTINCT n'est en aucune façon une fonction et ne s'applique pas à des colonnes mais à des lignes.
    DISTINCT permet de n'avoir que des lignes dont toutes les valeurs sont différentes. Autrement dit DISTINCT supprime les lignes en doublons.
    Lisez ce que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/sqlaz/select/#L1.2

    Je voudrai faire un 'DISTINCT' seulement du champ1.
    Vous ne pouvez pas et cela n'a aucun sens en matière de bases de données relationnelles !

    Commencez par apprendre le langage SQL. Mon site comme mes bouquins peuvent vous y aider !

    A +

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je vous remercie pour cette réponse, mais si DISTINCT supprime uniquement les lignes en doublons, comment puije faire, si c'est possible, supprimer les doublons uniquement dans le Champ1 puisque le Champ2 est une date il n'y a rien a supprimer. Il me faudrais absoluement faire un ORDER BY pour optenir la ligne la plus récente du Champ1 uniquement.

    Merci

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Ce que veux dire SQLPro c'est que le distinct s'aplique à tes deux champs (1 Ligne).....

    Donc tu pourrait avoir pour reprendre ton exemple uniquement ceci :
    Champ1 | Champ2 | Champ3
    1 12/05/2008 14:22:55 3
    4 12/05/2008 14:21:55 6
    Puisque ta dernière ligne Champs1, Champs2 est identique (Sauf heure et champs3)...
    Champ1 | Champ2 | Champ3
    1 12/05/2008 14:20:55 8
    Ces cours son très instructifs !!!

Discussions similaires

  1. Distinct sur colonne unique
    Par Dnx dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/11/2005, 10h10
  2. Select distinct sur varchar
    Par SILO dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 02/10/2005, 00h17
  3. Réponses: 2
    Dernier message: 24/05/2005, 14h04
  4. Distinct sur un seul champ...
    Par Noodles dans le forum Langage SQL
    Réponses: 16
    Dernier message: 04/01/2005, 09h36
  5. [Débutant] DISTINCT sur une seule des colonnes ?
    Par Neilos dans le forum Langage SQL
    Réponses: 9
    Dernier message: 23/06/2004, 23h04

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