Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

mysql i naredba CASE

[es] :: MySQL :: mysql i naredba CASE

[ Pregleda: 3947 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

stex

Član broj: 718
Poruke: 374
*.zrlocal.net

Sajt: stivi.on.neobee.net


+21 Profil

icon mysql i naredba CASE31.05.2004. u 09:17 - pre 223 meseci
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
stivi.on.neobee.net
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.drenik.net



+3 Profil

icon Re: mysql i naredba CASE31.05.2004. u 09:24 - pre 223 meseci
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)
Owl
 
Odgovor na temu

NetworkAdmin

Član broj: 4445
Poruke: 609
*.bbone.utic.net.ba.



Profil

icon Re: mysql i naredba CASE31.05.2004. u 14:40 - pre 223 meseci
koja je verzija mysql servera?
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: mysql i naredba CASE31.05.2004. u 18:38 - pre 223 meseci
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.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

stex

Član broj: 718
Poruke: 374
*.zrlocal.net

Sajt: stivi.on.neobee.net


+21 Profil

icon Re: mysql i naredba CASE01.06.2004. u 06:24 - pre 223 meseci
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.
stivi.on.neobee.net
 
Odgovor na temu

utvara
Slobodan Utvić
Vivvo CMS lead developer, Spoonlabs
d.o.o. Beograd

Član broj: 677
Poruke: 87
*.sbb.co.yu
Via: [es] mailing liste

Jabber: utvara@elitesecurity.org
ICQ: 28140625
Sajt: utvara.blogspot.com


Profil

icon Re: mysql i naredba CASE01.06.2004. u 10:51 - pre 223 meseci
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]
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: mysql i naredba CASE01.06.2004. u 10:59 - pre 223 meseci
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

Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

stex

Član broj: 718
Poruke: 374
*.zrlocal.net

Sajt: stivi.on.neobee.net


+21 Profil

icon Re: mysql i naredba CASE01.06.2004. u 11:21 - pre 223 meseci
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.

stivi.on.neobee.net
 
Odgovor na temu

[es] :: MySQL :: mysql i naredba CASE

[ Pregleda: 3947 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.