[ b0sAnChE @ 30.04.2009. 16:45 ] @
Pozdrav!

Imam sljedeći problem:

Imam 3 tabele!

Tabela - Kategorije (idkat, nazivkategorije)

Tabela - Podkategorije (idpodkat, idkat, nazivpodkategorije)

Tabela - Artikli (idartikla, idpodkat, nazivartikla)

Treba mi upit koji će mi ispisati nazivkategorije za idartikla = 50 ?

Kako da riješim ovo? Hvala unaprijed!
[ Igor Gajic @ 30.04.2009. 17:13 ] @
Netestirano...

Code:

SELECT nazivkategorije FROM Kategorije 
JOIN Podkategorije USING(idKat)
JOIN Artikli USING(idPodKat)
WHERE idartikla = 50;
[ b0sAnChE @ 30.04.2009. 17:26 ] @
hmm....ne radi...

dobijem sljedecu gresku:

Unknown column 'idkat' in 'from clause'
[ Igor Gajic @ 30.04.2009. 17:31 ] @
A jesi ti siguran da je ovo prava struktura tabele :

Tabela - Kategorije (idkat, nazivkategorije) ???


Code:


-- Ovo radi ....

CREATE TABLE Kategorije
(
idKat INTEGER,
nazivKategorije VARCHAR(40)
);

CREATE TABLE Podkategorije
(
idPodKat INTEGER,
idKat INTEGER,
nazivpodkategorije VARCHAR(50)
);

CREATE TABLE Artikli
(
idArtikla INTEGER,
idPodKat INTEGER,
nazivArtikla VARCHAR(50)
);

SELECT nazivkategorije FROM Kategorije
JOIN Podkategorije USING(idKat)
JOIN Artikli USING(idPodKat)
WHERE idartikla = 50;
[ Nikola Poša @ 30.04.2009. 17:31 ] @
Probaj i ovako:
Code:

SELECT k.nazivkategorije
FROM kategorije k, podkategorije pk, artikli a
WHERE a.idartikla = 50 AND a.idpodkat = pk.idpodkat AND pk.idkat = k.idkat
[ bogdan.kecman @ 30.04.2009. 17:36 ] @
moralo bi da radi to sto ti je igor napisao:

Code:

mysql> create table Kategorije (idkat int, nazivkategorije int);
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> create table Podkategorije (idpodkat int, idkat int, nazivpodkategorije int);
Query OK, 0 rows affected, 2 warnings (0.00 sec)

mysql> create table Artikli (idartikla int, idpodkat int, nazivartikla int);
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> SELECT nazivkategorije FROM Kategorije 
    -> JOIN Podkategorije USING(idKat)
    -> JOIN Artikli USING(idPodKat)
    -> WHERE idartikla = 50;
Empty set (0.00 sec)

mysql> insert into Kategorije values (1,2), (2, 3), (3, 4);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> insert into Podkategorije values (10, 2, 10), (11, 2, 11);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> insert into Artikli values (50, 10, 60), (77,11,77);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> SELECT nazivkategorije FROM Kategorije 
    -> JOIN Podkategorije USING(idKat)
    -> JOIN Artikli USING(idPodKat)
    -> WHERE idartikla = 50;
+-----------------+
| nazivkategorije |
+-----------------+
|               3 | 
+-----------------+
1 row in set (0.01 sec)

mysql> 


doduse, ja bi ga napisao malo drugacije (samo sam dodao imena tabela pre imena polja kako bi mysql znao tacno sta hoces):

Code:

SELECT Kategorije.nazivkategorije FROM Kategorije 
JOIN Podkategorije USING(idKat)
JOIN Artikli USING(idPodKat)
WHERE Artikli.idartikla = 50;

[ b0sAnChE @ 30.04.2009. 23:39 ] @
Code:

SELECT k.nazivkategorije
FROM kategorije k, podkategorije pk, artikli a
WHERE a.idartikla = 50 AND a.idpodkat = pk.idpodkat AND pk.idkat = k.idkat

Hvala za ovo ! Radi!!!