[ b0sAnChE @ 13.04.2009. 19:54 ] @
Pozz ES Clanovi!

Imam sljedeći problem:

Imam bazu - dvije tabele

1. Tabela sadrži Kategorije

IDKAT , NAZIVKAT, PARENT

2. Tabela sadrži informacije o aplikacijama:

IDAPLIKACIJE, NAZIVAPLIKACIJE, IDKAT

Treba mi upit pomoću kojeg ću dobiti sve aplikacije kod kojeg je IDKAT = 15 i PARENT = 15

Hvala! Ako treba još kakvih informacija, tu sam.
[ Tudfa @ 13.04.2009. 21:01 ] @
Ako sam dobro skapirao:

Code:

SELECT * FROM `aplikacije` where idkat=15 and idkat in
(select idkat from `kategorije` where parent = 15)
[ b0sAnChE @ 13.04.2009. 21:18 ] @
HMM....
nazalost mi ovo ne daje nikakvih rezultata. :( dobijam prazan rezultat.

Mislim da si me shvatio dobro.

Znaci imam Categoriju i Parent Categorije. U aplikacijama mogu da odredim direktno Categoriju, ili neku Podkategoriju (Parent). :( Meni treba taj upit koji ce uzeti u razmatranje i ID cateogorije i Parent ID (Sve podkategorije = ID Categorije)
[ Nikola Poša @ 13.04.2009. 21:22 ] @
Čekaj, ako je u toj tvojoj tabeli za kategorije primarni ključ samo idkat, onda je on jedinstven, i u tom slučaju je dovoljan samo upit:
Code:

SELECT * 
FROM aplikacije 
WHERE idkat = 15

Ali to ne mora da znači da je s njim u paru i parent = 15...

Ali ako imaš dvostruki primarni ključ (idkat i parent), onda to što ti hoćeš ima smisla, i upit bi trebao da izgleda ovako:
Code:

SELECT * FROM aplikacije 
WHERE idkat = 
(
   SELECT idkat 
   FROM kategorije
   WHERE idkat = 15 AND parent = 15
)
[ b0sAnChE @ 13.04.2009. 21:23 ] @
Evo sta dobijem:

Code:
SELECT * 
FROM aplikacije 
WHERE idkat = 15


Ono sto dobijem u rezultatu kod ovoga jesu samo aplikacije koje su direktno vezane za idkat=15

Sve ostale aplikacije koje su vezane za bilo koju podkategoriju ove kategorije = 15, ne dobijem u rezultatu.
[ bogdan.kecman @ 13.04.2009. 21:36 ] @
Code:

SELECT aplikacija.nazivaplikacije FROM aplikacija, kategorija WHERE aplikacija.idkat = kategorija.idkat AND aplikacija.idkat=15 AND kategorija.parent=15;


ili

Code:

SELECT aplikacija.nazivaplikacije FROM aplikacija JOIN kategorija USING(idkat) WHERE aplikacija.idkat=15 AND kategorija.parent=15;


[ b0sAnChE @ 13.04.2009. 21:39 ] @
Pokusao sam i ovo:

Code:


SELECT * FROM aplikacije 
WHERE idkat IN 
(
   SELECT idkat 
   FROM kategorije
   WHERE AND parent = 15
)



Ovdje mi izbacuje sve aplikacije koje su u podkategorijama kod kojih je kategorija = 15. Sve sto je direktno vezano za Kategoriju ne ispisuje. :(
[ b0sAnChE @ 13.04.2009. 21:49 ] @
Citat:


Code:

SELECT aplikacija.nazivaplikacije FROM aplikacija, kategorija WHERE aplikacija.idkat = kategorija.idkat AND aplikacija.idkat=15 AND kategorija.parent=15;


ili

Code:

SELECT aplikacija.nazivaplikacije FROM aplikacija JOIN kategorija USING(idkat) WHERE aplikacija.idkat=15 AND kategorija.parent=15;



Ne radi ni prvi ni drugi upit. Javlja mi greske. :(
[ bogdan.kecman @ 13.04.2009. 21:51 ] @
ajde copy / paste greske ... verovatno si uradio copy/paste upita .. u upitu pise da se tabela zove aplikacija, kod tebe se verovatno zove aplikacije i slicno .. dakle "upisi prava imena tabela i polja" kad vec nisi ovde pustio "show create table" izlaz
[ b0sAnChE @ 14.04.2009. 05:54 ] @
Evo ovako izgledaju te tabele

1. Tabela ( Aplikacije)
Code:

ID     Title              Category     
83     Snake          11     
85     Eye                   9 
.... 




2. Tabela (Kategorije)
Code:

id     name                         parent
9     3D      
15     Computers      
24     Apple                            15
42     Dell                                 15

....... 


[ b0sAnChE @ 14.04.2009. 06:18 ] @
RJESIO SAM PREKO OVOGA:

$id = 15;
$query = "SELECT * FROM `Aplikacije` WHERE `idkat` = '".$id."' OR `idkat` IN (SELECT `id` FROM `Kategorije` WHERE `parent` = '".$id."')";

Hvala svima na trudu!