Re: join group by etc

Поиск
Список
Период
Сортировка
Искать
От
Brian Hurt
Тема
Re: join group by etc
Дата
Msg-id
489C4FFF.3020209@janestcapital.com
Ответ на
join group by etc (Peter Jackson)
Список
Дерево обсуждения
join group by etc Peter Jackson <tasmaniac@iprimus.com.au>
Re: join group by etc Brian Hurt <bhurt@janestcapital.com>
Re: join group by etc "Obe, Regina" <robe.dnd@cityofboston.gov>
Re: join group by etc Peter Jackson <tasmaniac@iprimus.com.au>
Re: join group by etc "Obe, Regina" <robe.dnd@cityofboston.gov>
Re: join group by etc Tom Lane <tgl@sss.pgh.pa.us>
Re: join group by etc Peter Jackson <tasmaniac@iprimus.com.au>
table unions "Wright, George" <George.Wright@infimatic.com>
Re: table unions "Sean Davis" <sdavis2@mail.nih.gov>
Re: table unions "Wright, George" <George.Wright@infimatic.com>
Peter Jackson wrote:

> Hi List
>
>  I'm trying to convert some mysql queries to postgres and hitting a 
> brick wall with the following so was hoping for some hints.
>
> table_one - iId,tId,toC,toD,toE
> table_two - iId,fId,ttC,ttD
> table_three - fId,tId,tthC,tthD,tthE,tthF
>
> table_one data 11,9,o,1218177417,data
> table_two data
>  11, 24, test1
>  11, 25, test2
>  11, 26, test4
>  11, 27, test6
>
> table_three data
>  24,9,area1,t,y,3
>  25,9,area2,t,y,2
>  26,9,area3,a,y,1
>  27,9,area4,y,y,4
>
> mysql query
>
> SELECT T1.*, T2.ttC, T3.tthD, toD as sort FROM table_one T1 INNER JOIN 
> table_two T2 ON T1.iId = T2.iId INNER JOIN table_three T3 ON T3.fId = 
> T2.fId WHERE T1.tId = '9' and T1.toC = 'o' GROUP BY T1.iId ORDER BY 
> sort asc;
>
> Which in mysql returns 1 row but fails in pg due to the group by.
>
> If I add more fields to the group by or remove the group by it returns 
> 4 rows which is incorrect
>
> Basically I guess I am asking how I can get the same result in pg 
> without to much change in the sql.
>
> Peter J
>
You might try:
SELECT T1.*, T2.ttC, T3.tthD, toD AS sort DISTINCT ON (T1.iId) FROM ...

but I think you want to rethink what you're doing.  It looks like you 
want to select against one of the four matching entries in table_three- 
and I'm not sure which is the right one, or if just any will do.  With 
DISTINCT ON I don't think there is any gaurentee *which* of the four you 
will get- different environments might get different results.

Brian

В списке pgsql-novice по дате отправления
От: Tom Lane
Дата:
Сообщение: Re: join group by etc
От: Peter Jackson
Дата:
Сообщение: Re: join group by etc
FAQ