[ stex @ 31.05.2004. 09:17 ] @
SELECT tabela1.sifra,
CASE WHEN tabela1.status = 0
THEN (
SELECT tabela2.naziv
FROM baza2.tabela2
WHERE tabela1.sifra = tabela2.sifra
)
ELSE (
SELECT tabela3.naziv
FROM baza3.tabela3
WHERE tabela1.sifra = tabela3.sifra
)
END FROM baza1.tabela1,baza2.tabela2,baza3.tabela3

Moze li mi neko reci gde sam pogresio? Mysql mi kaze da je greska u 4. redu.
Hvala
[ _owl_ @ 31.05.2004. 09:24 ] @
Pa moze biti da MySQL ne podrzava subquery-e, a moze biti da tvoja komanda i nije bas sintaksno ispravna (sta ako subquery ne vrati tacno jedan red)
[ NetworkAdmin @ 31.05.2004. 14:40 ] @
koja je verzija mysql servera?
[ Dejan Topalovic @ 31.05.2004. 18:38 ] @
Hm, stvarno cudan query :)
Kao prvo, kopiraj nam gresku koju ti ispise. Da nije mozda ova greska:
ERROR 1109 (42S02): Unknown table 'tabela1' in where clause ?

Zatim, kao sto su vec neke kolege rekle, navedi verziju mysql servera.

Na kraju, CASE naredbu zavrsavaj sa END CASE, a ne samo END.

Ne bi bilo lose da nam kazes ukratko sta zapravo zelis postici, pa cemo ti mozda dati i efikasniji query.
[ stex @ 01.06.2004. 06:24 ] @
Mysql-a (3.23.56)

Treba mi ovako nesto:
SELECT sifra,
CASE WHEN STATUS = 0
THEN (
"true"
)
ELSE (
"false"
)
END FROM `tabela1`

Sa tim sto umesto "true", treba da stoji podupit koji ce iz druge tabele (i iz druge baze) vuci neko polje i umesto "false" stojati drugi uput koji ce iz neke druge tabele (i trece baze) vuci neko polje.

Ako treba da se upgrejduje mysql, jel ima nekih opasnosti za tekuce baze? OS je RH8.
[ utvara @ 01.06.2004. 10:51 ] @
Obzirom da imas samo dva izbora mozes da koristis IF, mislim da
sledeci query radi ono sto ti treba, verovatno ga treba jos doraditi.


SELECT baza1.tabela1.sifra,
IF (baza1.tabela1.status = 0, baza2.tabela2.naziv, baza3.tabela3.naziv) as naziv
FROM baza1.tabela1,baza2.tabela2,baza3.tabela3
WHERE (baza1.tabela1.sifra = baza2.tabela2.sifra
AND baza1.tabela1.sifra = baza3.tabela3.sifra)

poz, utvara

--
Sve najlepse,
Best regards,
Slobodan mailto:[email protected]
[ Dejan Topalovic @ 01.06.2004. 10:59 ] @
Moras upgrade-ovati MySQL server, jer su podupiti (subqueries) podrzani tek od verzije 4.1.

Osim toga, izgleda da CASE ne mora da zavrsava sa END CASE. U dokumentaciji pise da mora da zavrsava sa END CASE, ali kod mene ne radi sa tim, nego samo sa END. Verzija je 4.1.1a-alpha-nt, a i u verzijama 3.23.* je izgleda isto tako.

Korektna sintaksa za tvoj CASE bi bila:
Code:

SELECT
CASE status
WHEN 0
THEN "nula"
ELSE "nije nula"
END
FROM tabela1
[ stex @ 01.06.2004. 11:21 ] @
Citat:
Obzirom da imas samo dva izbora mozes da koristis IF, mislim da
sledeci query radi ono sto ti treba, verovatno ga treba jos doraditi.

SELECT baza1.tabela1.sifra,
IF (baza1.tabela1.status = 0, baza2.tabela2.naziv, baza3.tabela3.naziv) as naziv
FROM baza1.tabela1,baza2.tabela2,baza3.tabela3
WHERE (baza1.tabela1.sifra = baza2.tabela2.sifra
AND baza1.tabela1.sifra = baza3.tabela3.sifra)


Sa IF-om sam i uradio.
Neznam zasto sam i bio pocinjao sa CASE-om.