Autor | Zpráva | ||
---|---|---|---|
Camo Profil |
Brý večir všetkým,
a prosím vás vie mi niekto vysvetliť prečo mi tento join v posgresql hádže chybu: 1select user_id, max(arrival) as arrival, max(date) as date from attendance group by user_id, date select user_id, max(arrival) as arrival, max(date) as date from attendance group by user_id, date
inner join
select max(date) as date, user_id from attendance groupe by user_id
using (user_id, date) LINE 4: inner join Obidva selecty samostatne fungujú. S postgres sa len učím robiť, tak majte zľutovanie. Ďakujem. |
||
juriad Profil |
#2 · Zasláno: 30. 11. 2014, 21:42:03
Tipuji, že chybí závorky kolem joinovaného dotazu a jeho alias. A měl jsi tam překlep:
1select user_id, max(arrival) as arrival, max(date) as date from attendance group by user_id, date select user_id, max(arrival) as arrival, max(date) as date from attendance group by user_id, date
inner join
(select max(date) as date, user_id from attendance group by user_id) x
using (user_id, date) |
||
Camo Profil |
#3 · Zasláno: 30. 11. 2014, 23:48:27
juriad:
Zátvorky aj alias som skúšal, tie to niesú. |
||
juriad Profil |
#4 · Zasláno: 1. 12. 2014, 00:25:03
Aha, máš join až za gpoup by.
1SELECR * FROM SELECR * FROM
(select user_id, max(arrival) as arrival, max(date) as date from attendance group by user_id, date) x
inner join
(select max(date) as date, user_id from attendance group by user_id) y
using (user_id, date) Ale ten dotaz by nejspíš šel napsat lépe. Chceš pro každého uživatele a jeho poslední zaznamenaný den informaci o maximálním arrival v daném dnu? |
||
Camo Profil |
#5 · Zasláno: 1. 12. 2014, 09:56:38
juriad:
Díky, funguje. A áno presne to chcem, dokonca potrebujem len ten posledný deň pre každého usera, ale nič lepšie ma nenapadá. Máš nejaký nápad |
||
Kajman Profil |
select distinct on (user_id) user_id, date select distinct on (user_id) user_id, date
from attendance
order by user_id, date desc |
||
Camo Profil |
#7 · Zasláno: 2. 12. 2014, 18:01:18
Kajman:
Priznávam že tomu zápisu nerozumiem. |
||
Kajman Profil |
#8 · Zasláno: 2. 12. 2014, 18:29:40
Ani po nastudování manuálu odkázaného z toho kódu?
http://www.postgresql.org/docs/current/static/sql-select.html#SQL-DISTINCT Pokud chcete „len ten posledný deň pre každého usera“ tak můžete použít v pgsql ten způsob s distinct on nebo klasicky group by jak v jiných databázích: select max(date) as date, user_id from attendance group by user_id select max(date) as date, user_id from attendance group by user_id Výhoda v distinct on je možnost z toho posledního záznamu získat jednoduše i další sloupce. |
||
Camo Profil |
#9 · Zasláno: 2. 12. 2014, 21:03:48
Kajman:
Ten link som si nevšimol, ale dostanem sa k tomu až časom. V každom prípade díky. |
||
Časová prodleva: 10 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0