self-join and DISTINCT quandry.

From: Stuart Rison <rison(at)biochemistry(dot)ucl(dot)ac(dot)uk>
To: pgsql-sql <pgsql-sql(at)postgresql(dot)org>
Subject: self-join and DISTINCT quandry.
Date: 1999-09-29 20:11:24
Message-ID: Pine.LNX.4.10.9909292106040.30104-100000@bsmlx17
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Dear all,

Consider the following table:

test=> select * from hum;
number|letter|family
------+------+------
1|a |one
2|b |one
3|c |one
4|d |one
5|e |one
6|f |one
7|a |two
8|b |two
9|c |two
10|g |two
11|h |two
12|i |two
(12 rows)

If I want to know what letters appear in more than one family and what
the number for number for such letters is, I could do:

test=> select t1.letter, t1.number, t2.number from hum t1, hum t2 where
t1.letter=t2.letter and t1.family<>t2.family;
letter|number|number
------+------+------
a | 1| 7
b | 2| 8
c | 3| 9
a | 7| 1
b | 8| 2
c | 9| 3
(6 rows)

test=>

But what is I didn't want the information to appear twice. I could try
adding DISTINCT but that would not work because row a,1,7 is of course
DISTINCT from a,7,1 although I am looking for such duplication to be
eliminated...

I'd like to do this without using DISTINCT ON if at all possible (because
I disapprove on DISTINCT ON on moral grounds ;) ).

regards,

S.

Stuart C. G. Rison
Department of Biochemistry and Molecular Biology
6th floor, Darwin Building, University College London (UCL)
Gower Street, London, WC1E 6BT, United Kingdom
Tel. 0207 504 2303, Fax. 0207 380 7033
e-mail: rison(at)biochem(dot)ucl(dot)ac(dot)uk

Browse pgsql-sql by date

  From Date Subject
Next Message Ismail Kizir 1999-09-29 20:11:41 PL/PgSql documentation and examples
Previous Message raptor 1999-09-29 18:56:55 Many questions