Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как составить один (!) запрос для увеличения минимальных зарплат? / 6 сообщений из 6, страница 1 из 1
03.08.2015, 01:23:09
    #39021355
Dimasick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить один (!) запрос для увеличения минимальных зарплат?
Есть таблица tabula (id, user, salary). Как одним запросом (!) увеличить зарплату на 10% всем, у кого она самая низкая? Т.е. если самая низкая зарплата (из всех) составит 100 у.е., то всем (!), у кого она равна 100 у.е., нужно заменить ее на 110 у.е.
У меня получается или двумя запросами (сначала узнаем этот самый минимум, а уже потом делаем апдейт), или одним, но только для одного минималиста (а нужно для всех, ведь их может быть несколько).
...
Рейтинг: 0 / 0
03.08.2015, 07:10:24
    #39021382
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить один (!) запрос для увеличения минимальных зарплат?
Dimasick,

выполнением запроса update с подзапросами.
...
Рейтинг: 0 / 0
03.08.2015, 11:02:12
    #39021508
Dimasick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить один (!) запрос для увеличения минимальных зарплат?
MasterZiv, и как именно? Дело в том, что когда я делаю двумя запросами, то первый у меня - это
Код: sql
1.
SET @var = (SELECT `id` FROM `tabula` ORDER BY `salary` ASC LIMIT 1);


а уже во втором идет
Код: sql
1.
UPDATE `tabula` SET `salary`=`salary`*1.1 WHERE `id` = @var


И как их объединить в один?
Я пытался сделать так:
Код: sql
1.
UPDATE `tabula` SET `salary`=`salary`*1.1 WHERE `id` = (SELECT `id` FROM `tabula` ORDER BY `salary` ASC LIMIT 1)


но получаю ошибку
You can't specify target table 'tabula' for update in FROM clause
...
Рейтинг: 0 / 0
03.08.2015, 12:49:59
    #39021627
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить один (!) запрос для увеличения минимальных зарплат?
конкретно с этой ошибкой можно бороться, используя тупизну мускля:
Код: sql
1.
where id=(select id from (select id from asd order by 1 asc limit 1) t0)


но почему вы выбираете ид, а не минимальную зарплату?
...
Рейтинг: 0 / 0
03.08.2015, 14:22:47
    #39021741
Dimasick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить один (!) запрос для увеличения минимальных зарплат?
tanglirконкретно с этой ошибкой можно бороться, используя тупизну мускля:
Код: sql
1.
where id=(select id from (select id from asd order by 1 asc limit 1) t0)



Не работает :( Меняет значение только в одной строке, хотя минимальных зарплат несколько (одинаковых).


tanglirно почему вы выбираете ид, а не минимальную зарплату?
А какая разница?
...
Рейтинг: 0 / 0
03.08.2015, 14:30:08
    #39021747
Dimasick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как составить один (!) запрос для увеличения минимальных зарплат?
Хотя нет, ВСЕ РАБОТАЕТ, я уже понял, что нужно было не ай-ди брать, а именно зарплату. Ура! Спасибо!
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как составить один (!) запрос для увеличения минимальных зарплат? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]