Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
-1 голос «против» избранное Есть три таблицы: CREATE TABLE departments ( id INT NOT NULL, departments_name varchar (50) NULL, PRIMARY KEY (id) ); CREATE TABLE employees ( id int NOT NULL, first_name varchar(50) NULL, last_name varchar(50) NULL, department_id int NULL, salary money NULL, PRIMARY KEY (id), FOREIGN KEY (department_id) REFERENCES departments (id) ); CREATE TABLE sales ( employee_id int NOT NULL, sales_time datetime NOT NULL, amount money NULL, PRIMARY KEY (employee_id, sales_time), FOREIGN KEY (employee_id) REFERENCES employees (id) ); Есть три таблицы: CREATE TABLE departments ( id INT NOT NULL, departments_name varchar (50) NULL, PRIMARY KEY (id) ); CREATE TABLE employees ( id int NOT NULL, first_name varchar(50) NULL, last_name varchar(50) NULL, department_id int NULL, salary money NULL, PRIMARY KEY (id), FOREIGN KEY (department_id) REFERENCES departments (id) ); CREATE TABLE sales ( employee_id int NOT NULL, sales_time datetime NOT NULL, amount money NULL, PRIMARY KEY (employee_id, sales_time), FOREIGN KEY (employee_id) REFERENCES employees (id) ); Обновить значение salary в таблице employees установив заработные платы для сотрудников по следующим правилам: Если выручка меньше 10000, но больше чем 20 * salary сотрудника - умножить значение salary на 1.5. Мой запрос: UPDATE employees SET salary = salary * 2 WHERE EXISTS ( SELECT 1 FROM sales s WHERE s.employee_id = employees.id AND YEAR(CAST(sales_time AS DATE)) = 2017 group by s.employee_id HAVING sum(s.amount) < 10000 AND sum(s.amount) > ( SELECT salary * 20 FROM employees e where e.id = s.employee_id) ) Обрабатывает 0 строк, а должна быть одна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 09:51 |
|
||
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
cglcz, в задаче сказано умножить на 1.5, а ты умножаешь на 2 :) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. сам допилишь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 10:45 |
|
||
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
Руслан Дамирович, да, спасибо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 11:15 |
|
||
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
cglcz, не проще что-то типа этого? можно и доп условия ставить, при необходимости... ну и как по мне это разобрать проще Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 13:10 |
|
||
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
Bekzod, действительно, всегда проще обновлять всю таблицу целиком, так серверу не скучно cglcz главное такие вещи не запускать больше одного раза :) а то с таким подходом никаких денег не хватит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 13:16 |
|
||
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
TaPaK, зачем всю таблу... если задача только по одному условию то ясно что условие просто перенести в WHERE Код: sql 1. 2. 3. 4. я просто хотел чтобы человек понял что это работает, типо для таких задач Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 13:21 |
|
||
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
TaPaK, ахахаха насмешил))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 13:22 |
|
||
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
TaPaKBekzod, главное такие вещи не запускать больше одного раза :) а то с таким подходом никаких денег не хватит По поводу этого да, согласен)) cglcz, себе дешевле не трогать исходные данные, создать к примеру доп.таблу перерасчёта... иначе потом забибикаешься разбирать умножил ли уже на коеффициент или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 13:44 |
|
||
|
Помогите написать UPDATE с двумя условиями
|
|||
|---|---|---|---|
|
#18+
TaPaKглавное такие вещи не запускать больше одного раза :) а то с таким подходом никаких денег не хватит Там все равно ограничение сверху, так что норм. Все равно база учебная - пусть "виртуальные" sales порадуются большим зарплатам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2018, 13:53 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39644404&tid=1689734]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 380ms |

| 0 / 0 |
