Mysql query vprašanje...
 
G-force 30. jan 2013 13:05:23 Pridružen od:
31. mar 2008
828 objav
516 60 3
#1

Imam primer



id date name

2 12.1.2000 miha

2 16.1.2000 tine

2 17.1.2000 polde

2 19.1.2000 mojca

3 24.3.2001 ana

4 24.5.2001 ana



4 26.3.2001 mojca



Rad bi dobil zadnje zapise ter njihov seštevek torej da query izpiše

2 19.1.2000 mojca 4

3 24.3.2001 ana 1

4 26.3.2001 mojca 2



Če zapišem



SELECT id, date, name, COUNT(*) FROM xy GROUP BY id



mi bo vrnilo seštevke in PRVE zapise posamezne grupe. Jaz bi pa rabil zadnje (datumsko). Kako to naredim?


všeč(0) ni všeč(0) spam(0)
 
schtr4jh 30. jan 2013 13:16:06 Pridružen od:
24. nov 2008
402 objav
322 33 4
#2

Ko uporabljaš group by, v selectu ne smejo bit polja, ki so v posamezni skupini med zapisi drugačna.



Tebi bi verjetno delovala tale rešitev: SELECT MAX(date), COUNT(*) FROM xy GROUP BY id



Mimogrede, zakaj "kršiš" (ne)napisano pravilo, ki pravi, da mora bit primary key (id) unikaten?


všeč(1) ni všeč(0) spam(0)
 
G-force 30. jan 2013 13:17:27 Pridružen od:
31. mar 2008
828 objav
516 60 3
#3

Za datum sem ugotovil, da bi lahko uporabil MAX() samo ni mi jasno, kako bi pa vključil name?



SELECT id, MAX(date), name, COUNT(*) FROM xy GROUP BY id


všeč(0) ni všeč(0) spam(0)
 
G-force 30. jan 2013 13:20:48 Pridružen od:
31. mar 2008
828 objav
516 60 3
#4

schtr4jh: malo pred mano si odgovoril. Tabela seveda ni takšna kot je zgoraj zapisano. Tko sem napisal samo, da je čim enostavneje in pregledno za iskanje rešitve. Verjetno bom potem res poskusil s MAX() za ostale podatke pa verjetno več queryjev. Optimizacija / hitrost itak ni važna, ker bom query poganjal samo na localhost in ne online.


všeč(0) ni všeč(0) spam(0)
 
schtr4jh 30. jan 2013 13:26:08 Pridružen od:
24. nov 2008
402 objav
322 33 4
#5

Ti mogoče kaj koristi funkcija GROUP_CONCAT()?


všeč(0) ni všeč(0) spam(0)
 
G-force 30. jan 2013 15:29:50 Pridružen od:
31. mar 2008
828 objav
516 60 3
#6

Ne vem. Nimam časa brati. Sem pa problem rešil tako, da sem naredil zanko in updejtal z vsemi vnosi... "ustavi" se pa pač pri zadnjem. Verjetno grozna rešitev, če bi bila stran online vendar, ker samo prestavljam ene vnose iz enega sistema v drugega in delam na localhost, povsem spremenljiva. Naenkrat je pognal 30.000+ querjiev vendar je bilo končano v par sekundah tko da fajn. Vseeno hvala.


všeč(0) ni všeč(0) spam(0)
 
ledi 30. jan 2013 22:56:46 Pridružen od:
14. avg 2008
681 objav
325 223 14
#7

rabis embeded SQL stavke



SELECT A.id, A.date, A.name, (SELECT COUNT(*) FROM xy WHERE id=A.id) cnt FROM xy A ORDER BY A.date DESC LIMIT 0,3


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se