Pogledajte određenu poruku
Staro 01. 10. 2008.   #7
DejanVesic
old school
Professional
 
Avatar DejanVesic
 
Datum učlanjenja: 15.06.2005
Lokacija: Novi Beograd
Poruke: 448
Hvala: 21
70 "Hvala" u 46 poruka
DejanVesic će postati "faca" uskoro
Default

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.
DejanVesic je offline   Odgovorite uz citat