powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Инкремент требуемого поля в зависимости от значения переменной. Как сделать?
4 сообщений из 4, страница 1 из 1
Инкремент требуемого поля в зависимости от значения переменной. Как сделать?
    #39542215
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть табличка, справочник клиентов, формируемый "на лету", с полями (список для примера):
`id`, `client`, `name`, `stat_a`, `stat_b`, `stat_both`

Поле `id` автоинкрементное, на поле `client` уникальный индекс.

Заполнение таблички делается при обработке каждого нового документа. Сейчас в ХП запросом (для примера упрощено) делается так:
Код: sql
1.
2.
3.
INSERT INTO `table` (`client`, `name`, 1) VALUES (@client, @name)
ON DUPLICATE KEY UPDATE 
    `stat_both` = `stat_both` + 1;


Поле `stat_both` таким образом содержит общее количество документов клиента.

Хочу, чтобы в зависимости от значения переменной @doc_type (может принимать одно из двух значений 'a' или 'b') инкрементилось дополнительно соответствующее поле `stat_a` или `stat_b` для подсчета документов конкретного типа.

Уместно ли такое условие как-то изящно поместить в ON DUPLICATE KEY UPDATE или же, проще тупо в IF...ELSE продублировать запрос с соответствующим списком обновляемых полей?
...
Рейтинг: 0 / 0
Инкремент требуемого поля в зависимости от значения переменной. Как сделать?
    #39542222
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, доупрощал пример до безобразия )))
Конечно, так.
Код: sql
1.
2.
3.
INSERT INTO `table` (`client`, `name`, `stat_both`) VALUES (@client, @name, 1)
ON DUPLICATE KEY UPDATE 
    `stat_both` = `stat_both` + 1;
...
Рейтинг: 0 / 0
Инкремент требуемого поля в зависимости от значения переменной. Как сделать?
    #39542252
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleХочу, чтобы в зависимости от значения переменной @doc_type (может принимать одно из двух значений 'a' или 'b') инкрементилось дополнительно соответствующее поле `stat_a` или `stat_b` для подсчета документов конкретного типа.
Код: sql
1.
2.
3.
ON DUPLICATE KEY UPDATE
  stat_a = stat_a + (@doc_type = 'a'),
  stat_b = stat_b + (@doc_type = 'b')
...
Рейтинг: 0 / 0
Инкремент требуемого поля в зависимости от значения переменной. Как сделать?
    #39542355
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, спасибо, годное решение :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Инкремент требуемого поля в зависимости от значения переменной. Как сделать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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