Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Vracanje max id kod spajanja

[es] :: MySQL :: Vracanje max id kod spajanja

[ Pregleda: 1377 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.adsl.verat.net.



+1365 Profil

icon Vracanje max id kod spajanja15.02.2011. u 09:45 - pre 160 meseci
Naslov nije baš najsretniji ali ništa bolje mi nije palo na pamet.

Problem je prost (bar mi se čini) ali ja sam zakucao i ne mogu da provalim.
Treba da izvučem podatke iz par tabela, od kojih iz jedne tabele treba da izvučem samo red (i jedan podatak iz njega) gdje je i max(id) za korisnik_id preko koga spajam tu tabelu.
E, sve radi osim toga. Ja dobijem prvi unos iz te tabele za taj korisnik_id, a treba mi posljednji.

Code (sql):

SELECT username, pa_jos_kolona_iz_drugih_tabela, cena (za ovo mi treba cena iz posljednjeg unosa MAX(id))
FROM
tabele razno razne
WHERE
razno razni uslovi i spajanje tih tabela
GROUP BY username;
 


Nadam se da ovo nije previše apstraktno opisano i da može da se skapira šta me muči.
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Vracanje max id kod spajanja15.02.2011. u 14:51 - pre 160 meseci
Help ti lepo kaze sledece:

Citat:

If you use GROUP BY, output rows are sorted according to the GROUP BY columns as if you had an ORDER BY for the same columns.
To avoid the overhead of sorting that GROUP BY produces, add ORDER BY NULL:


Zbog toga moras prvo da napravis prost query gde sortiras vrednosti po max(id) tj order by id desc pa zatim da uradis select iz tog rezultat grupisan po polju user iliti otprilike ovako:

Code:

select a.user,a.cena from 
   (SELECT user,c.cena FROM user u, cenovnik c order by c.id desc) a 
group by ime order by NULL;



Tko leti vrijedi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Vracanje max id kod spajanja15.02.2011. u 23:54 - pre 160 meseci
primer:

Code:

SELECT t1.f1, t1.f2, t1.f3, t2.f1, t2.f2, t3.f1
FROM t1, t2, t3
WHERE
t1.f1 > t2.f1 AND
t1.f3 > 10 AND
t3.f1 = 'xyz' AND

t2.f2 = (SELECT MAX(t4.id) FROM t4)

ORDER BY t1.f1 DESC;


jasno?

ovo ti "spaja" t1, t2 i t3 tako da ti je t2.f2 = taj max() koji si hteo ... to sto si napisao ti je ovaj upit, ako si hteo nesto drugo - napisi bolje objasnjenje sta hoces da izvedes
 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Vracanje max id kod spajanja16.02.2011. u 09:05 - pre 160 meseci
Ali meni treba to za svakog korisnika.
Evo konkretno, tabela korisnici u kojoj se nalazi username i neki standardni podaci o korisniku, i tabela kupljene_knjige u kojoj se nalazi svaka knjiga koju je do sada kupio taj korisnik kao i cijena te knjige.
Meni treba da vratim sve podatke o korisniku korisnici.* i posljednju knjigu koju je uzeo taj korisnik zajedno sa cijenom te knjige.
Nadam se da je sad malo jasnije :-)
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Vracanje max id kod spajanja16.02.2011. u 09:42 - pre 160 meseci
Pretpostavimo da tabela korisnici ima kolone ID i USERNAME, a kupljene knjige imaju ID, USERID (onoga koji je kupio knjigu) i CENA

Onda je kod:

Code (sql):

SELECT u.*, x.*
FROM korisnici u,  (
   SELECT id, userid, cena
   FROM kupljene_knjige k, (
      SELECT MAX(id) id, userid
      FROM kupljene_knjige
      GROUP BY userid) m
   WHERE k.id = m.id) x
WHERE u.id = x.userid
 


Naravno, u upitu gde spajaš korisnike sa ugnežđenim upitom možeš da staviš OUTER JOIN ako te interesuju i korisnici koji nisu kupili knjigu.
 
Odgovor na temu

Tyler Durden
Tyler Durden
Beograd

Član broj: 4312
Poruke: 3379
*.verat.net.



+1365 Profil

icon Re: Vracanje max id kod spajanja16.02.2011. u 12:32 - pre 160 meseci
Bravo, to je to ;-)
Beneath civilization's fragile crust, cold chaos churns...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Vracanje max id kod spajanja16.02.2011. u 16:38 - pre 160 meseci
btw, obrati samo paznju da ne koristis nikakve blobove, text-ove ili varchar-ove preko 255 karaktera u ovakvim upitima posto ce znacajno zabosti performanse (pravice se temp tabele na disku umesto u ramu)
 
Odgovor na temu

[es] :: MySQL :: Vracanje max id kod spajanja

[ Pregleda: 1377 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.