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: 8140 | Odgovora: 28 ] > FB > Twit

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 - pre 230 meseci
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
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

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



+41 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim16.12.2005. u 18:00 - pre 230 meseci
Samo jos da nam kazes koji je DBMS u pitanju.
 
Odgovor na temu

japan

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



+13 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim16.12.2005. u 18:08 - pre 230 meseci
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]
 
Odgovor na temu

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 - pre 230 meseci
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
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

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

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 11:06 - pre 230 meseci
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

 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

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

Sajt: www.baze-podataka.net


+2 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 11:18 - pre 230 meseci
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.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.

Sajt: www.geocities.com/brankob..


Profil

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

Pozdrav
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

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

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 12:10 - pre 230 meseci
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
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 12:20 - pre 230 meseci
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]


 
Odgovor na temu

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.

Sajt: www.geocities.com/brankob..


Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 12:53 - pre 230 meseci
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
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 13:03 - pre 230 meseci
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.
 
Odgovor na temu

japan

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



+13 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim19.12.2005. u 13:28 - pre 230 meseci
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
 
Odgovor na temu

CandyMan

Član broj: 3420
Poruke: 147



+49 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 08:54 - pre 230 meseci
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!
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 10:52 - pre 230 meseci
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?
 
Odgovor na temu

branimir.ts
Beograd

Član broj: 56661
Poruke: 127
*.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 - pre 230 meseci
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
 
Odgovor na temu

CandyMan

Član broj: 3420
Poruke: 147



+49 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 12:59 - pre 230 meseci
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!
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 13:14 - pre 230 meseci
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?
 
Odgovor na temu

CandyMan

Član broj: 3420
Poruke: 147



+49 Profil

icon Re: Zanimljiv problem iz SQL-a koji ne uspevam da resim27.12.2005. u 13:22 - pre 230 meseci
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!
 
Odgovor na temu

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

Strane: 1 2

[ Pregleda: 8140 | Odgovora: 28 ] > FB > Twit

Postavi temu Odgovori

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