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: 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:
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.
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 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 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: 9 let
|
0