Search Postgresql Archives

Re: limit left join rows to 1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Andreas Kretschmer wrote:

Jure Ložar <jure.lozar@xxxxxxxxxxx> schrieb:

Hi.

Is it possible to limit number of left join rows that match condition to 1? I don't want to have hits from first table multiplied when more then 1 row matches on left join condition.

I'm not sure if i understand you correctly, but perhaps this is what you
are searching for:

Suppose, you have 2 tables, master and detail:

test=# select * from master;
id
----
 1
 2
(2 rows)

test=# select * from detail;
id | val
----+-----
 1 | 200
 2 | 200
 1 | 100
(3 rows)


This is the left join:

test=# select m.id, d.val from master m left join detail d on m.id=d.id;
id | val
----+-----
 1 | 100
 1 | 200
 2 | 200
(3 rows)


But you need only one row from detail, which? Suppose, this one with the
max(val) value:

test=# select m.id, d.val from master m left join (select id, max(val)
as val from detail group by id) d on m.id=d.id;
id | val
----+-----
 1 | 200
 2 | 200
(2 rows)


Is this okay for you?


Andreas
Yes. It's good. Not exactly what I ment but it works.

Thank you.

Jure


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux