SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka |
![]() |
|
Alati teme | Način prikaza |
|
![]() |
#1 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() Imam dve tabele:
items id item-a i parent koji moze biti -1 ako item nema parenta ili itemid ako ima parenta tabela sadrzi sve iteme. itemid | parent --------------- owners_items ownerid je id osobe koja poseduje item itemid je veza sa tabelom items ownerid | itemid ---------------- Problem je sledeci, treba izvuci sve iteme koje ne poseduje owner (prilicno prosto za sada). Ali onda dodje problem ![]() Any ideas, help etc? |
![]() |
![]() |
![]() |
#2 |
old school
Professional
Datum učlanjenja: 15.06.2005
Lokacija: Novi Beograd
Poruke: 448
Hvala: 21
70 "Hvala" u 46 poruka
![]() |
![]() Hajde pojasni opet onaj deo "ako item ima parenta"
Item ima parenta, parent pripada owneru -> Item jeste u skupu rešenja ili ne?
__________________
http://www.vesic.org | Blog: http://www.vesic.org/blog/ | Fina kolekcija programa: http://www.vesic.org/programi/ |
![]() |
![]() |
![]() |
#3 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() Item moze da bude parent drugom itemu.
Item ima parenta, parent pripada owneru -> Item jeste u skupu rešenja ili ne? jeste (ali njegov parent nije, posto ne trebaju da se prikazu itemi koje owner poseduje) |
![]() |
![]() |
![]() |
#4 |
old school
Professional
Datum učlanjenja: 15.06.2005
Lokacija: Novi Beograd
Poruke: 448
Hvala: 21
70 "Hvala" u 46 poruka
![]() |
![]() Sad, možda ja ne vidim veliku sliku
![]() Kôd:
Select * From Items Where ItemID Not In ( Select ItemID from owners_items where ownerid = :ownerInQuestion )
__________________
http://www.vesic.org | Blog: http://www.vesic.org/blog/ | Fina kolekcija programa: http://www.vesic.org/programi/ |
![]() |
![]() |
![]() |
#5 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() Poenta je, ako item ima parent-a znaci da nije "stand-alone", vec upgrade nekog vec postojeceg itema (njegovog parent-a).
Stastavlja se lista itema koje osoba moze da kupi, ako nije vlasnik parent itema, nemoze da kupi child item (nece mu se prikazati u listi) dok ne kupi parent item. Nadam se da sam bio jasnij :/ ![]() PS posto owners_items ima negde oko 2mil rekorda, IN nije bas lepo ![]() Kôd:
select items.* from items left join owners_items on (items.id = owners_items.itemid and owners_items.ownerid= $ownerid) where type = '$type' and min_level<=$level and owners_items.itemid is null Poslednja izmena od cvele : 01. 10. 2008. u 12:21. |
![]() |
![]() |
![]() |
#6 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() Evo resenja
Kôd:
( select items.* from items left join owners_items on (items.id = owners_items.itemid and owners_items.ownerid = $ownerid) where type = '$type' and min_level<=$level and owners_items.itemid is null and parent = -1 ) UNION ( select items.* from items left join owners_items on (items.id = owners_items.itemid and owners_items.ownerid = $ownerid) where type = '$type' and min_level<=$level and owners_items.itemid is null and parent in ( select items.itemid from items left join owners_items on (items.id = owners_items.itemid and owners_items.ownerid = $ownerid) where owners_items.itemid is not null ) ) |
![]() |
![]() |
![]() |
#7 |
old school
Professional
Datum učlanjenja: 15.06.2005
Lokacija: Novi Beograd
Poruke: 448
Hvala: 21
70 "Hvala" u 46 poruka
![]() |
![]() Hm, hajde prvo koncepcijski da dođemo do rešenja; a performanse posle (ako postoje odgovarajući indeksi po polju za koji radiš NOT IN ili IN, pametan SQL engine će to fino odraditi i bez prolaska kroz 2M slogova, pogotovo ako je IN podskup dovoljno mali, što izgleda da je slučaj).
Znači, treba da dobiješ sve elemente za koje važi: - owner ga ne poseduje i oni nemaju parenta ili - owner poseduje parenta ali ne poseduje child element Nekako ovako: Kôd:
Select * From Items Where parentID = -1 and ItemID Not In ( Select ItemID from owners_items where ownerid = :ownerInQuestion ) UNION Select * From Items Where ParentID In ( Select ItemID from owners_items where ownerid = :ownerInQuestion ) And ItemID Not IN ( Select ItemID from owners_items where ownerid = :ownerInQuestion )
__________________
http://www.vesic.org | Blog: http://www.vesic.org/blog/ | Fina kolekcija programa: http://www.vesic.org/programi/ Poslednja izmena od DejanVesic : 01. 10. 2008. u 12:51. |
![]() |
![]() |
![]() |
#8 |
old school
Professional
Datum učlanjenja: 15.06.2005
Lokacija: Novi Beograd
Poruke: 448
Hvala: 21
70 "Hvala" u 46 poruka
![]() |
![]() To je ok, ali sam shvatio da je u ovom upitu određeni owner fiksiran i da neće doći do Dekartovog proizvoda
![]() Testiraj upit za tog što ima 5 Mil, čisto da vidimo koliko DB enginetu treba ![]()
__________________
http://www.vesic.org | Blog: http://www.vesic.org/blog/ | Fina kolekcija programa: http://www.vesic.org/programi/ |
![]() |
![]() |
![]() |
#9 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() ocekuj sutra, posto nemam pristup pravim podacima van vpn-a... a ovde ga nemam
![]() |
![]() |
![]() |
![]() |
#10 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
![]() ![]() |
![]() sad sam se setio
![]() ![]() 8.16sec (za moj query) |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
[WordPress] Is its parent directory writable? | blackshtef | Web aplikacije, web servisi i software | 9 | 15. 10. 2008. 02:43 |
Fetch First 20 Rows Only | tokajac | SQL baze podataka - Sponzor: Baze-Podataka.net | 10 | 25. 08. 2008. 16:54 |
Double float problem - resen, ali ima dodatni problem :0 | ljtruba | (X)HTML, JavaScript, DHTML, XML, CSS | 34 | 23. 08. 2008. 02:28 |
Koji je dizajn baze najbolji, za kategorije koje su u parent-N-child vezi? | misko_ | SQL baze podataka - Sponzor: Baze-Podataka.net | 13 | 27. 05. 2008. 21:05 |
Event ponovno okinut na child elementima | dee | (X)HTML, JavaScript, DHTML, XML, CSS | 7 | 29. 03. 2008. 11:41 |