ورود

View Full Version : مشکل اجرا نشدن دو تا کوئری



azadeh_1510
شنبه 11 خرداد 1392, 11:04 صبح
با سلام خدمت دوستان
من دو تا کوئری دارم که بنظر خودم مشکلی نداره منتها نمیدونم چرا error میده؟ :گریه:
1:
UPDATE Employees
SET Code =
Case when Code = 1167 then 7777
when Code = 1165 then 5555
when Code = 1169 then 9999
else end
2:
UPDATE Employees
SET Right (Code, 4 )
WHERE (Code = 61167)

محمد سلیم آبادی
شنبه 11 خرداد 1392, 11:09 صبح
در query اول بعد از else باید یک مقدار scalar (تک مقداری) قرار بگیره.
در query دوم جلوی set ایراد داره مشخص نشده که چه ستونی قرار هست مقدارش بروز رسانی بشه.
منظورم جاهایی است که با ؟؟؟ مشخص شده است:


1:
UPDATE Employees
SET Code = Case when Code = 1167 then 7777
when Code = 1165 then 5555
when Code = 1169 then 9999
else ???
end

2:
UPDATE Employees
SET ??? = Right (Code, 4 )
WHERE (Code = 61167)


چطور متوجه این اشکالات نشدید؟

azadeh_1510
شنبه 11 خرداد 1392, 11:23 صبح
با سلام و تشکر از پاسختون
در مورد کوئری اول من نمیخوام بعد از
else
کاری انجام بشه
و در مورد کوئری دوم:که به این صورت اصلاحش میکنم
UPDATE Employees
SET Code =
Case when Code = 61167 then Right (Code, 4 )
when Code = 61165 then Right (Code, 4 )
when Code = 61169 then Right (Code, 4 )
else
end
بازم نمیخوام در قسمت
else
کاری انجام بشه

محمد سلیم آبادی
شنبه 11 خرداد 1392, 11:39 صبح
منظورتون از اینکه نمیخواهید کاری انجام بشه چیه؟
حدس میزنم منظورتون اینه که اگر مقدار ستون code یکی از سه مقدار مذکور بود عمل update انجام بشه در غیر اینصورت هیچ کاری صورت نگیره. عبارت Case اتان را میتوانید از نوع simple بگیرید مثل کد زیر:
به قسمت where توجه کنید:
UPDATE Employees
SET Code =
Case code when 61167 then Right (Code, 4 )
when 61165 then Right (Code, 4 )
when 61169 then Right (Code, 4 )
end
where code in (61167,61165,61169)

محمد سلیم آبادی
شنبه 11 خرداد 1392, 11:43 صبح
الان که بیشتر کدتون رو بررسی کردم متوجه شدم نیاز به CASE اصلا وجود نداره از عملگر IN کافیه استفاده بشه مثل این:
UPDATE Employees
SET Code = Right (Code, 4 )
where code in (61167,61165,61169)