Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 7 odgovora
  • 5.679 pregleda

Najnovija ↓

mysql i naredba CASE 31.05.2004. u 10:17 · pre 272 meseca #1
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
Potpis
stivi.on.neobee.net
Re: mysql i naredba CASE 31.05.2004. u 10:24 · pre 272 meseca #2
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)
Potpis
Owl
Re: mysql i naredba CASE 31.05.2004. u 19:38 · pre 272 meseca #4
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.
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: mysql i naredba CASE 01.06.2004. u 07:24 · pre 272 meseca #5
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.
Potpis
stivi.on.neobee.net
Re: mysql i naredba CASE 01.06.2004. u 11:51 · pre 272 meseca #6
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]
Potpis
utvara is no saint
CV
>>Trenutni hobi
>>Dragon
Re: mysql i naredba CASE 01.06.2004. u 11:59 · pre 272 meseca #7
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
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: mysql i naredba CASE 01.06.2004. u 12:21 · pre 272 meseca #8
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.
Potpis
stivi.on.neobee.net
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme