Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 Problem with update and case

Author  Topic 

TorspeR
Starting Member

11 Posts

Posted - 2010-09-30 : 02:59:03
Hello, I've got an SQL like so:

UPDATE jyypalv_elisa70t
INNER JOIN `paketit` ON `jyypalv_elisa70t.paketti` = `paketit.paketti`
INNER JOIN `puh_ulk_jyyp_hel` ON `jyypalv_elisa70t.jarjnum` = `puh_ulk_jyyp_hel.jarjnum`
SET `elisa70_kulut`=
CASE
WHEN `jyypalv_elisa70t.puh_min_yht` >= '70' THEN ((`jyypalv_elisa70t.puh_min_yht`*0,09)+`pakhinta`+(`elisasmsm`*`elisakolsms`)+(`saunalsmsm`*`saunasms`)+(`muutsmsm`*muutsms)+(`elisamulm`*`elisakolmul`)+(`saunamulm`*`saunamul`)+(`muutmulm`*`muutmul`)+(`spostimulm`*`spostimul`)+(`palvnum`+`palvnum_yl`+`palvnum_as`+`valtak_yrnum`+`ulkom_puola`+`ulkom_viro`+`ulkoms_v1s`+`ulkomv_v1s`+`ulkoms_v6s`+`ulkomv_v6s`+`smspalv_as`+`smsulkl_v1s`+`smsulkl_v6s`+`smsulkl_v1m`+`datas_internet`+`datas_wap`+`ulkgprs_int`+`ulkgprs_mms`))
ELSE (`pakhinta`+(`elisasmsm`*`elisakolsms`)+(`saunalsmsm`*`saunasms`)+(`muutsmsm`*muutsms)+(`elisamulm`*`elisakolmul`)+(`saunamulm`*`saunamul`)+(`muutmulm`*`muutmul`)+(`spostimulm`*`spostimul`)+(`palvnum`+`palvnum_yl`+`palvnum_as`+`valtak_yrnum`+`ulkom_puola`+`ulkom_viro`+`ulkoms_v1s`+`ulkomv_v1s`+`ulkoms_v6s`+`ulkomv_v6s`+`smspalv_as`+`smsulkl_v1s`+`smsulkl_v6s`+`smsulkl_v1m`+`datas_internet`+`datas_wap`+`ulkgprs_int`+`ulkgprs_mms`))
END

This gimes me: #1054 - Unknown column 'jyypalv_elisa70t.paketti' in 'on clause'. I have this `paketti` column in jyypalv_elisa70t table. What did I do wrong?

webfred
Master Smack Fu Yak Hacker

8781 Posts

Posted - 2010-09-30 : 03:00:46
update table
set column= case ...end
from ...
inner join ..



No, you're never too old to Yak'n'Roll if you're too young to die.
Go to Top of Page

TorspeR
Starting Member

11 Posts

Posted - 2010-09-30 : 03:24:55
Thanks, but didn't work. I tried it like so:

UPDATE jyypalv_elisa70t
SET `jyypalv_elisa70t.elisa70_kulut`=
CASE
WHEN `jyypalv_elisa70t.puh_min_yht` >= '70' THEN ((`puh_min_yht`*0,09)+`pakhinta`+(`elisasmsm`*`elisakolsms`)+(`saunalsmsm`*`saunasms`)+(`muutsmsm`*muutsms)+
(`elisamulm`*`elisakolmul`)+(`saunamulm`*`saunamul`)+(`muutmulm`*`muutmul`)+(`spostimulm`*`spostimul`)+(`palvnum`+`palvnum_yl`+`palvnum_as`+`valtak_yrnum`+
`ulkom_puola`+`ulkom_viro`+`ulkoms_v1s`+`ulkomv_v1s`+`ulkoms_v6s`+`ulkomv_v6s`+`smspalv_as`+`smsulkl_v1s`+`smsulkl_v6s`+`smsulkl_v1m`+`datas_internet`+
`datas_wap`+`ulkgprs_int`+`ulkgprs_mms`))
ELSE (`pakhinta`+(`elisasmsm`*`elisakolsms`)+(`saunalsmsm`*`saunasms`)+(`muutsmsm`*muutsms)+(`elisamulm`*`elisakolmul`)+(`saunamulm`*`saunamul`)+
(`muutmulm`*`muutmul`)+(`spostimulm`*`spostimul`)+(`palvnum`+`palvnum_yl`+`palvnum_as`+`valtak_yrnum`+`ulkom_puola`+`ulkom_viro`+`ulkoms_v1s`+`ulkomv_v1s`
+`ulkoms_v6s`+`ulkomv_v6s`+`smspalv_as`+`smsulkl_v1s`+`smsulkl_v6s`+`smsulkl_v1m`+`datas_internet`+`datas_wap`+`ulkgprs_int`+`ulkgprs_mms`))
END
FROM jyypalv_elisa70t
INNER JOIN paketit ON jyypalv_elisa70t.paketti = paketit.paketti
INNER JOIN puh_ulk_jyyp_hel ON jyypalv_elisa70t.jarjnum = puh_ulk_jyyp_hel.jarjnum

What should I do, it gives: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM jyypalv_elisa70t INNER JOIN paketit ON jyypalv_elisa70t.paketti = pak' at line 12

I'm not sure if it requires FROM here.. I tried without and then the error is about INNER JOINs.
Go to Top of Page

EugeneLim11
Posting Yak Master

167 Posts

Posted - 2010-09-30 : 03:33:12
It will be easier for us to help you when you tell us the table name, table columns and what you are trying to do instead of us reading your code and trying to figure out what you are trying to do with your code... ;)

check out my blog at http://www.aquariumlore.blogspot.com
Go to Top of Page

TorspeR
Starting Member

11 Posts

Posted - 2010-09-30 : 04:03:02
Ok, I'm gonna try and make this a bit clearer but only try:

So, I'd like to update 'jyypalv_elisa70t' table's
'jyypalv_elisa70t.elisa70_kulut' column. I'm trying to use CASE WHEN
THEN to get a result I need (WHEN `jyypalv_elisa70t.puh_min_yht` >=
'70' THEN ((`puh_min_yht`...)) ELSE ...). I need INNER JOINs because I
need to get stuff from other tables. After THEN every column except for
`jyypalv_elisa70t.puh_min_yht` ofcourse are from other tables that are
in INNER JOINs.

Oh and I changed this a bit:

UPDATE jyypalv_elisa70t
SET `jyypalv_elisa70t.elisa70_kulut`=
CASE
WHEN `jyypalv_elisa70t.puh_min_yht` >= '70' THEN ((`puh_min_yht`*0,09)+`pakhinta`+(`elisasmsm`*`elisakolsms`)+(`saunalsmsm`*`saunasms`)+(`muutsmsm`*muutsms)+
(`elisamulm`*`elisakolmul`)+(`saunamulm`*`saunamul`)+(`muutmulm`*`muutmul`)+(`spostimulm`*`spostimul`)+(`palvnum`+`palvnum_yl`+`palvnum_as`+`valtak_yrnum`+
`ulkom_puola`+`ulkom_viro`+`ulkoms_v1s`+`ulkomv_v1s`+`ulkoms_v6s`+`ulkomv_v6s`+`smspalv_as`+`smsulkl_v1s`+`smsulkl_v6s`+`smsulkl_v1m`+`datas_internet`+
`datas_wap`+`ulkgprs_int`+`ulkgprs_mms`))
ELSE (`pakhinta`+(`elisasmsm`*`elisakolsms`)+(`saunalsmsm`*`saunasms`)+(`muutsmsm`*muutsms)+(`elisamulm`*`elisakolmul`)+(`saunamulm`*`saunamul`)+
(`muutmulm`*`muutmul`)+(`spostimulm`*`spostimul`)+(`palvnum`+`palvnum_yl`+`palvnum_as`+`valtak_yrnum`+`ulkom_puola`+`ulkom_viro`+`ulkoms_v1s`+`ulkomv_v1s`
+`ulkoms_v6s`+`ulkomv_v6s`+`smspalv_as`+`smsulkl_v1s`+`smsulkl_v6s`+`smsulkl_v1m`+`datas_internet`+`datas_wap`+`ulkgprs_int`+`ulkgprs_mms`))
END
FROM jyypalv_elisa70t
INNER JOIN jyypalv_helmi ON jyypalv_elisa70t.jarjnum = jyypalv_helmi.jarjnum
INNER JOIN paketit ON jyypalv_elisa70t.paketti = paketit.paketti
INNER JOIN puh_ulk_jyyp_hel ON jyypalv_elisa70t.jarjnum = puh_ulk_jyyp_hel.jarjnum
Go to Top of Page

webfred
Master Smack Fu Yak Hacker

8781 Posts

Posted - 2010-09-30 : 07:54:40
This is a MS SQL Server forum.
Maybe there is something special in MySQL and you should try to get help in a MySQL forum.


No, you're never too old to Yak'n'Roll if you're too young to die.
Go to Top of Page
   

- Advertisement -