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 plusieurs requête


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut Distinct sur plusieurs requête
    Bonjour à tous,

    je voulais savoir si il etait possible de faire un distinct sur plusieurs requete.
    Par exemple j'ai ceci :
    select x as ID, y as Value from Table1
    union
    select x as ID, y as Value from Table2
    Je souhaiterais savoir si l'on pouvai englober le tout avec un select distinct par au dessus et récupérer le resultat.
    SI une autre méthode existe je suis preneur.

    Merci a tous

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Salut,

    UNION fait déjà un distinct, ne me dis pas que tu as des doublons

    Par contre bien sûr que tu peux utiliser ta requête comme sous requête, mais pour quelque chose de plus utile qu'un DISTINCT.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut
    Merci tu as raison UNION fait un distinct et je le savais pas.
    Je suis moins con aujourd'hui et je t'en remercie.

    Pourrais tu m'expliquer la 2eme solution avec la sous requetes.
    J'aimerais bien savoir comment faire?

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Héhé j' espère aussi finir ma journée moins bête.
    Pour le 2ème point, est ce que c'est seulement cette syntaxe qui te manque ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select * 
    from (
           select x as ID, y as Value from Table1
           union
           select x as ID, y as Value from Table2 
         )
    where ...
    Pense à utiliser les ressources du site : http://sql.developpez.com/

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut
    la nouvelle syntaxe ne fonctionne pas

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Quel est ton SGBD?

  7. #7
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Au passage, j'en profite pour ajouter : pour ne pas supprimer les doublons, il faut utiliser UNION ALL. (ce qui, dans les cas où le dédoublonnage n'est pas nécessaire, est plus performant).
    L'opérateur UNION "simple" est le même que celui existant sur les ensembles "mathématiques".

    Pour la requête, essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT t.* 
    FROM (
           SELECT x AS ID, y AS Value FROM Table1
           union
           SELECT x AS ID, y AS Value FROM Table2 
         ) AS t
    WHERE ...
    Et si ça ne marche pas, donne nous le message d'erreur

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Par défaut
    La syntaxe de pacman est parfaite. Cela fonctionne sans problème à présent.

    Merci à tous

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

Discussions similaires

  1. [SQL] Distinct sur plusieurs champs
    Par sllab dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/08/2009, 21h29
  2. faire un distinct sur plusieurs colonnes
    Par elekis dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/03/2009, 13h23
  3. Liste DISTINCT sur plusieur table
    Par Nako_lito dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/06/2008, 08h49
  4. Requête : distinct sur plusieurs champs
    Par bractar dans le forum Langage SQL
    Réponses: 13
    Dernier message: 08/06/2007, 19h54
  5. Distinct sur plusieurs champs
    Par bblampain dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/02/2007, 10h29

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