2010-10-12 7 views
2

Salut Je suis sûr qu'il ya requête pour ce genre d'opération, mais je ne peux pas sembler l'obtenir.
J'ai une table comme ceci:Comment sélectionner distinct de plusieurs colonnes


product_id | saved_by | deleted_by | accepted_by | published_by 
-----------+----------+------------+-------------+------------- 
1   | user1 |   | user1  | 
-----------+----------+------------+-------------+------------- 
2   |   | user2  |    | 
-----------+----------+------------+-------------+------------- 
3   | user2 |   |    | user3 
-----------+----------+------------+-------------+------------- 
4   |   |   | user1  | user4 
-----------+----------+------------+-------------+------------- 

Et je suis en train de créer une requête qui sélectionnerait tous les utilisateurs dans les domaines résultant distinctement quelque chose comme ceci:


users 
------ 
user1 
user2 
user3 
user4 

Tous les pointeurs ?

Répondre

3

La première chose qui vient à l'esprit est de UNION colonnes:

SELECT t.users 
    FROM 
    (
    SELECT saved_by AS users 
    FROM table 
    UNION 
    SELECT deleted_by 
    FROM table 
    UNION 
    SELECT accepted_by 
    FROM table 
    UNION 
    SELECT published_by 
    FROM table 
) AS t; 

http://postgresql.org/docs/9.0/interactive/sql-select.html

Comme une note de côté, si ces données ont été normalisées, il serait beaucoup plus facile d'obtenir les données de la façon dont vous voulez .

+0

chaud diggity, qui l'a fait. merci beaucoup! – Seerumi

+1

Vous n'avez pas besoin de DISTINCT si vous utilisez UNION. UNION éliminera déjà les doublons. La référence doc appropriée que vous recherchez est http://www.postgresql.org/docs/9.0/interactive/sql-select.html, la section sur "Clause UNION". –

+0

Droit, merci, j'ai mis à jour la réponse avec vos informations afin que ce soit correct. – Kuberchaun