Re: join help

Поиск
Список
Период
Сортировка
От Justin
Тема Re: join help
Дата
Msg-id 49DD518E.8000504@emproshunts.com
обсуждение исходный текст
Ответ на join help  (Kashmir <kashmir_us_1999@yahoo.com>)
Ответы Re: join help  (Kashmir <kashmir_us_1999@yahoo.com>)
Список pgsql-sql
Kashmir wrote:only difference is:<br /><blockquote cite="mid:411904.26957.qm@web31905.mail.mud.yahoo.com"
type="cite"><prewrap="">first table stores data per 'f_rrd_id' evey 5min, and the second table every single minute.
 
I
want to run a query that would return for the same 'f_rrd_id' all
values from both tables sorted by f_timestamp, of course a set would
only have values from the 5m table if the timestamp was present there
too (every 5th set only)

being a sql-lamer, i used some query
builder help to build my query (which served me quite well in the past
for all my 'complicated' sqls), and was suggested for f_rrd_id=444 to
use something as:
SELECT
td_fetch1m_by_rrd_id.f_timestamp,
td_fetch_by_rrd_id.f_ds,
<u><b>td_fetch_by_rrd_id.f_ds,</b></u>
td_fetch1m_by_rrd_id.f_ds,
td_fetch1m_by_rrd_id.f_us
FROM td_fetch_by_rrd_id
RIGHT JOIN td_fetch1m_by_rrd_id ON td_fetch_by_rrd_id.f_timestamp=td_fetch1m_by_rrd_id.f_timestamp
WHERE td_fetch1m_by_rrd_id.f_rrd_id=444
ORDER BY td_fetch1m_by_rrd_id.f_timestamp;

and this works quite fine and as expected in the source env (some gui-sqler). 
but when i take this into psql, i get totally messed up results, the values just dont make any sense...
</pre></blockquote><prewrap="">
 
The sql is joining on a time stamp??    Using the time stamp i would expect odd ball results because a several unique
f_rr_idcould have the same timestamp especially if its heavy write table .
 

every 5th set only ????  What does this mean what makes something the 5th set.   

I normally avoid table aliasing  but these names i'm having a real tough time reading so we are going to use 1Minute =
td_fetch1m_by_rrd_idand the 5Minute = td_fetch_by_rrd_id from here on out. 
 

You want to join whats in the 1Minute table to whats in the 5Minute only if it is in the 5Minute table and only return
from1Minute table where the timestamps is in the 5Minute table   If my understanding is correct this will work minus
anytypos.  To create a join condition we need a composite identity to join on.  So what i did is cast F_rr_id and
F_timestampto text adding them together to create a unique condition to join on.  
 

Also there is a typo above noted in bold f_ds is listed twice i believe that is a mistake. 

SELECTOneM.f_timestamp,FiveM.f_ds,FiveM.f_us,OneM.f_ds,OneM.f_us
FROM td_fetch1m_by_rrd_id OneM,
left Join (select f_rrd_id, f_ds, f_us, f_timestamp    from td_fetch_by_rrd_id ) FiveMON (OneM.f_rrd_id::text ||
OneM.f_timestamp::text)= (FiveM.f_rrd_id::text || FiveM.f_timestamp::text)
 
ORDER BY OneM.f_timestamp;
</pre>

В списке pgsql-sql по дате отправления:

Предыдущее
От: Kashmir
Дата:
Сообщение: join help
Следующее
От: Kashmir
Дата:
Сообщение: Re: join help