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

Zanimljiv problem iz SQL-a koji ne uspevam da resim

[es] :: Baze podataka :: Zanimljiv problem iz SQL-a koji ne uspevam da resim

Strane: 1 2

[ Pregleda: 2328 | Odgovora: 28 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

krdr
Dragan Krstic

Član broj: 42434
Poruke: 201
195.252.86.*

Sajt: krdr.ebloggy.com


Profil

icon Zanimljiv problem iz SQL-a koji ne uspevam da resim16.12.2005. u 17:27

Postoji tabela sa dva polja prikazana u gornjoj tabeli (koja su jedino bitna za ovaj primer). Polje id je primarni kljuc po principu AutoIncrement. obj je spoljni kljuc (nije bitno) i u njemu se nasumice pojavljuju zapisi. Potrebno je izdvojiti poslednje pojavljivanje svakog elementa u koloni obj, zajedno sa pripadajucim id. tako da rezultat bude kao u donjoj tabeli.

Pocetna tabela
id | obj
001 | 01
002 | 02
003 | 03
004 | 03
005 | 03
006 | 01
007 | 02
008 | 02
009 | 03
010 | 03
011 | 01
012 | 01

Rezultat

id | obj
008 | 02
010 | 03
012 | 01

Hvala
krdr
Mozda i proradi
16.12.2005. u 17:27 

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1636
*.neobee.net.

Sajt: www.clickersoftware.com


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim16.12.2005. u 18:00
Samo jos da nam kazes koji je DBMS u pitanju.
vidi GoranVucicevic #28045

www.clickersoftware.com
16.12.2005. u 18:00 

japan

Član broj: 34328
Poruke: 375
*.ppp-bg.sezampro.yu.



Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim16.12.2005. u 18:08
recimo:
Code:

select max(id), obj
from tabela
group by obj






[Ovu poruku je menjao japan dana 16.12.2005. u 19:12 GMT+1]
16.12.2005. u 18:08 

krdr
Dragan Krstic

Član broj: 42434
Poruke: 201
195.252.86.*

Sajt: krdr.ebloggy.com


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim17.12.2005. u 03:56
Problem sam pokusao da postavim tako da bude nezavisan od DBMS. Trebalo bi da radi u MS SQL i MySql.
U svakom slucaju, japan mi je resio problem, vrlo elegantno, pa bih voleo da mi da pojasnjenje resenja, da jos nesto naucim.
krdr
Mozda i proradi
17.12.2005. u 03:56 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 3036
*.dynamic.sbb.co.yu.

Sajt: blog.radioni.ca


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim17.12.2005. u 08:32
http://www.krstarica.com/lat/m...ql_group_by&arhiva=06-2001
17.12.2005. u 08:32 

branimir.ts
Beograd

Član broj: 56661
Poruke: 94
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 11:06
Nema potrebe ni za kakvim grupisanjem.

Query koji bi zadovoljavao tvoje uslove mogao bi biti kombinacija correlated subqueries + virtual table i mogao bi da izgleda ovako :

Code:

select 
(select top 1 [ID] FROM Tabela t where t.obj = tmp.obj order by [ID] desc) as [ID],
(select top 1  obj FROM Tabela t where t.obj = tmp.obj order by [ID] desc) as [Obj] 
FROM
(select distinct OBJ FROM Tabela T ) as tmp
order by [Obj]


Pozdrav

19.12.2005. u 11:06 

Dejan Topalovic
Dejan Topalović
Oracle DBA & PL/SQL Developer, Erste Sparinvest (..
Vienna

Član broj: 635
Poruke: 1374
*.infonova.at.

ICQ: 20142302
Sajt: www.outsourcing-it.com


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 11:18
Branimire mozes li obrazloziti svoju izjavu - zasto bi se trebalo tako raditi, a ne onako kako je napisao japan?

Jer, koliko vidim, radis NEPOTREBAN i SUVISAN, a pogotovo SPORIJI i po RESURSE zahtjevniji upit, koji se elegantno moze rijesiti grupisanjem, onako kako je napisao japan.
Osim toga, da li si siguran da svi DBMS-i podrzavaju sintaksu "TOP 1"? Ja mislim da ne.
19.12.2005. u 11:18 

branimir.ts
Beograd

Član broj: 56661
Poruke: 94
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 11:27
Prosto i jednostavno.
Sta ako nekada zatreba da se izlista poslednjix X pojavljivanja Obj , kako tu moze da pomogne Group by ?

Pozdrav
19.12.2005. u 11:27 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 3036
*.yubc.net.

Sajt: blog.radioni.ca


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 11:51
A šta ako hoćemo da nam DBMS i nešto odsvira dok vraća rezultat?
19.12.2005. u 11:51 

branimir.ts
Beograd

Član broj: 56661
Poruke: 94
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 12:10
He he he
U tom slucaju, valjda zamolim nekoga poput vas da mi pokaze kako napisati predjasnji query, ali sa sitnom izmenom, tj da vraca tacno 2 poslednja pojavljivanja Obj ?

Pozdrav
19.12.2005. u 12:10 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 3036
*.yubc.net.

Sajt: blog.radioni.ca


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 12:20
Citat:
branimir.ts: U tom slucaju, valjda zamolim nekoga poput vas da mi pokaze kako napisati predjasnji query, ali sa sitnom izmenom, tj da vraca tacno 2 poslednja pojavljivanja Obj ?

Vidi, momak.

Čovek je na jasno pitanje dao savršeno tačan, jasan i knjiški odgovor. Onda se pojaviš ti sa gorim rešenjem i kažeš "aha, a zamislite da pitanje nije to, nego neko drugo, vidite da je moj odgovor bolji: rešava i problem koji niko nije postavio". Primećuješ li suvišnost sopstvenih poruka?

Kad smo kod tvog rešenja, postoji jedan deo tvog kverija koji me posebno veseli:

Code:
(select top 1  obj FROM Tabela t where t.obj = tmp.obj order by [ID] desc) as [Obj]



19.12.2005. u 12:20 

branimir.ts
Beograd

Član broj: 56661
Poruke: 94
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 12:53
Citat:
jablan: Vidi, momak.
Kad smo kod tvog rešenja, postoji jedan deo tvog kverija koji me posebno veseli:
Code:
(select top 1  obj FROM Tabela t where t.obj = tmp.obj order by [ID] desc) as [Obj]



Drago mi je da se veselis dok posmatras delove koda. To znaci da volis SQL, ali, ipak mi nisi dao odgovor na predjasnje pitanje.

Dakle, modifikovao sam zadatak i treba mi lista od tacno 2 poslednja pojavljivanja, za svaki Obj a , kao i odgovarajuci Id ovi koji idu uz njih.

Pozdrav
19.12.2005. u 12:53 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 3036
*.yubc.net.

Sajt: blog.radioni.ca


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 13:03
Citat:
branimir.ts: Dakle, modifikovao sam zadatak i treba mi lista od tacno 2 poslednja pojavljivanja

Nisi ti postavio zadatak da bi mogao da ga modifikuješ. Ako imaš neki svoj SQL problem, otvori novu temu. A s obzirom da očigledno znaš rešenje svog problema, možeš u istoj poruci (ili u poruci ispod, kako ti već više odgovara) da svima pokažeš da znaš da ga rešiš.

I možeš ponekad i da preskočiš taj završni pozdrav, osećam se kao da slušam pozdrave, želje i čestitke na Radio Stopanji.
19.12.2005. u 13:03 

japan

Član broj: 34328
Poruke: 375
*.dialup.sezampro.yu.



Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 13:28
Citat:
branimir.ts: modifikovao sam zadatak i treba mi lista od tacno 2 poslednja pojavljivanja, za svaki Obj a , kao i odgovarajuci Id ovi koji idu uz njih.


pod predpostavkom da nisi modifikovao zahtev da upit bude nezavisan od SUBP, a da prvenstveno radi za MSSQL i MySql, voleo bih da vidim kako si zamislio rešenje ovoga
19.12.2005. u 13:28 

CandyMan

Član broj: 3420
Poruke: 83
*.hemofarm.co.yu.



Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 08:54
Citat:
branimir.ts:
Dakle, modifikovao sam zadatak i treba mi lista od tacno 2 poslednja pojavljivanja, za svaki Obj a , kao i odgovarajuci Id ovi koji idu uz njih.

Rešenje:
Code:

SELECT obj_id, id
  FROM test e
 WHERE 2 > (select count(*)
                from test e2
               where e2.id > e.id
                 and e2.obj_id=e.obj_id)
 ORDER BY 1,2 desc

    OBJ_ID         ID
---------- ----------
         1         12
         1         11
         2          8
         2          7
         3         10
         3          9

6 rows selected.


Tema http://www.elitesecurity.org/poruka/364723

Voleo bih da vidim Branimirovo rešenje...


[Ovu poruku je menjao CandyMan dana 27.12.2005. u 10:01 GMT+1]
Nisam ni znao da znam dok nisam prob'o!
27.12.2005. u 08:54 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 3036
*.yubc.net.

Sajt: blog.radioni.ca


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 10:52
Citat:
CandyMan: Rešenje:
Code:

SELECT obj_id, id
  FROM test e
 WHERE 2 > (select count(*)
                from test e2
               where e2.id > e.id
                 and e2.obj_id=e.obj_id)
 ORDER BY 1,2 desc


Kudos...

Je l' si se ti setio ovog ili si negde pokupio fazon?
27.12.2005. u 10:52 

branimir.ts
Beograd

Član broj: 56661
Poruke: 94
*.sezampro.yu.

Sajt: www.geocities.com/brankob..


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 10:54
Citat:
CandyMan: Rešenje:
Voleo bih da vidim Branimirovo rešenje...


Candy, drago mi je da vidim da razmisljas na pravi nacin, i da se zahvalim na izvanrednom resenju koje si postavio.

Namerno sam u nekoj od prethodnih poruka u ovoj temi postavio resenje koje je izazvalo razlicite reakcije ( naravno, to mi je i bio cilj ) , na kraju krajeva i cemu sluze ovakvi forumi ako se ne bi diskutovalo, i voleo bih, iskreno da vidim sto vise odgovora na jedan postavljeni zadatak.

Reakcije su bile ovakve ili onakve, ali da ne duzim vise , evo mog konacnog resenja za "modifikovani zadatak".

Dakle , da podsetim, potrebno je "vratiti" poslednjih x pojavljivanja Obj a iz sekvencijalne tabele. U ovom slucaju je , dakle x = 2.

Code:

SELECT id, [obj]
FROM test AS t
WHERE t.[id] 
IN 
(SELECT TOP 2  tmp.[id] FROM test tmp WHERE tmp.obj = t.obj order by [id] DESC)
ORDER BY [obj], [id] DESC


Tvoje resenje ,priznajem, ima prednost u odnosu na moje u smislu da je nezavisno od SQL sistema ( da podsetim, TOP X nije bas 100% standardno).

Pozdrav
27.12.2005. u 10:54 

CandyMan

Član broj: 3420
Poruke: 83
*.hemofarm.co.yu.



Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 12:59
Citat:
jablan: Kudos...

Je l' si se ti setio ovog ili si negde pokupio fazon?


Prvo predavanje predmeta "Strukture i baze podataka", profesor dr Veljko Malbaša, 1996. godina, pitanje za sve studente:
"Iz tabele sa radnicima i platama, izlistati podatke za prvu trojicu sa najvećom platom."
Kada se malo preformuliše dobije se:
"Izlistaj sve one koji po plati iznad sebe imaju manje od tri coveka - nijednog, jednog ili dva čoveka".
Rešenje
Code:

select radnik, plata
  from radnik r
 where 3 > (select count(*)
              from radnik r2
             where r2.plata > r.plata)

Umesto 3> može da stoji 2>=. Nadam se da je jasno.
Mislim da ovo može malo lepše da se okvalifikuje od "fazona na prodaju".

Naravno, performanse ovog upita su katastrofa, makar po mojim kriterijumima, ali za sve što ima manje od par hiljada slogova - nema problema.

Was ist Kudos?
Nisam ni znao da znam dok nisam prob'o!
27.12.2005. u 12:59 

jablan
Mladen Jablanović
Beograd

Član broj: 8286
Poruke: 3036
*.yubc.net.

Sajt: blog.radioni.ca


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 13:14
Citat:
CandyMan: Umesto 3> može da stoji 2>=. Nadam se da je jasno.

Da, da, naravno, treba se malo zamisliti ali je rešenje savršeno logično.
Citat:
Mislim da ovo može malo lepše da se okvalifikuje od "fazona na prodaju".

Hm, ja volim da na programiranje gledam kao na zanat. S obzirom da mi za razumevanje ovog upita ne treba duboko teoretsko poznavanje rada DBMS, posmatram ga kao zanatski fazon. I to dobar.
Citat:
Was ist Kudos?

Izraz poštovanja kao rezultat nekog podviga.

http://en.wikipedia.org/wiki/Kudos

BTW, koji je faks u pitanju?
27.12.2005. u 13:14 

CandyMan

Član broj: 3420
Poruke: 83
*.hemofarm.co.yu.



Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 13:22
Tehnički fakultet "Mihajlo Pupin" u Zrenjaninu, profesor Malbaša je u to vreme bio profesor na FTN u Novom Sadu, kasnije otišao u US da predaje na Washington State University. Gajim duboko poštovanje prema ovom čoveku i njegovom načinu rada i ophođenju prema studentima.
Nisam ni znao da znam dok nisam prob'o!
27.12.2005. u 13:22 

[es] :: Baze podataka :: Zanimljiv problem iz SQL-a koji ne uspevam da resim

Strane: 1 2

[ Pregleda: 2328 | Odgovora: 28 ]

Postavi temu Odgovori

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