Abed Al Rahman Hussien Balhawan Ответов: 1

Sql-запрос зарплата сотрудника, имеющего дело с клиентом с id=4, была удвоена


customer table (CUST_ID,CUST_NAME,CUST_ADDRESS,EMP_ID)

Employee table(EMP_ID,MANAGER_ID,EMP_NAME,EMP_TEL,EMP_SALARY,HIRE_DATE,DEPENDENT_NAME)


The salary of employee dealing with customer having id=4 has been doubled


Что я уже пробовал:

update employee
set emp_salary=emp_salary*2
from employee e
join customer c on c.emp_id=e.emp_id
having c.cust_id=4;

Maciej Los

А что у тебя за вопрос?

Abed Al Rahman Hussien Balhawan

Заработная плата сотрудника, имеющего дело с клиентом, имеющим id=4, была удвоена

Maciej Los

Вы получили то, что хотели (написано).

Abed Al Rahman Hussien Balhawan

код не работает :(

1 Ответов

Рейтинг:
12

0x01AA

Что-то вроде этого?

UPDATE employee
SET employee.emp_salary = employee.emp_salary * 2.0
WHERE EXISTS (SELECT c.EMP_ID FROM customer c WHERE c.emp_id = employee.emp_id)


[Редактировать]
UPDATE employee
SET employee.emp_salary = employee.emp_salary * 2.0
WHERE EXISTS (SELECT c.EMP_ID FROM customer c WHERE c.emp_id = employee.emp_id AND  c.cust_id=4)


Я не знаю Oracle, поэтому вышеизложенное является общим решением. например, С MS SQL вы можете использовать left join в обновлениях, которые, вероятно, будут более производительными.


Abed Al Rahman Hussien Balhawan

боюсь , что нет, только тот сотрудник, который работает с cust_id=4, должен быть удвоен
я попробовал это сделать
обновление сотрудника
установить emp_salary=emp_salary*2
от сотрудника е
внутреннее соединение клиента с на C.идентификатор emp_id=е.идентификатор emp_id
имея c.cust_id=4

0x01AA

О да, извините, что я забыл это (id == 4). Я думаю, вам легко добавить это ограничение?

Abed Al Rahman Hussien Balhawan

я пытался , но все равно где-то делаю что-то не так, не могли бы вы показать мне, как это делается ?

0x01AA

Я постараюсь помочь, см. [Edit] в ответе; не уверен, что я понял это правильно. В любом случае, было бы неплохо в следующий раз показать, что вы пробовали, а что нет...

Кстати. HAVING будет использоваться в SQL-операторах с использованием GROUP BY Я предлагаю вам (не воспринимайте это как оскорбление) прочитать некоторые базовые учебники по SQL ;)

Abed Al Rahman Hussien Balhawan

честно говоря, я просто попробовал сделать то же самое, что и вы, но забыл закрыть скобки. моя ошибка , большое спасибо !!!

0x01AA

Нет, ты не сделал этого! Использование слова "иметь" - это совсем другое дело ;)

Abed Al Rahman Hussien Balhawan

да,именно так, мне нужно больше правок, потому что прошло уже 5 лет с тех пор, как я закончил школу, и что касается вашего первого запроса

Обновление сотрудника
Установить employee.emp_salary = employee.emp_salary * 2.0
Где существует (выберите c.Идентификатор emp_id от клиента на C, где c.идентификатор emp_id = сотрудник.emp_id и сбыл.cust_id=4

я имел в виду , что забыл последние скобки, как показано выше, глупая ошибка, которую я сделал.
еще раз спасибо за помощь :)

0x01AA

Все в порядке, большое спасибо, что согласились. И кстати. работая в этой области более 30 лет, я все еще учусь. Последнее и не в последнюю очередь из за вопросов например от вас поэтому еще раз спасибо ;)

Abed Al Rahman Hussien Balhawan

надеюсь, я стану таким же, как ты :) :D

0x01AA

- надеюсь, я стану такой же, как ты."
Нет, пожалуйста, не надо. Сделай это лучше, чем я, все самое лучшее ;)

0x01AA

Благодарю вас сэр ;)

Maciej Los

Всегда пожалуйста, SQL Maestro.