Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / CASE несколько параметров / 12 сообщений из 12, страница 1 из 1
17.10.2013, 18:02:10
    #38431726
kristoferruotsi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
приветствую
есть проблема с запросом, а именно, в конструкции case (MySQL)

сам запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE scupserver.scup_goods SET
ver_sagi =
CASE
WHEN barcode = 2104434 THEN 101
WHEN barcode = 2104434 THEN 1640
END
WHERE barcode IN (2104434,2104434)



хотел заменить на такой, но обновляет еще и строку groupid
Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE scupserver.scup_goods SET
ver_sagi =
CASE
WHEN barcode = 2104434 AND groupid = 21490013 THEN 101
WHEN barcode = 2104434 AND groupid = 21490023 THEN 1640
END
WHERE barcode IN (2104434,2104434)



помогите, кто сталкивался
...
Рейтинг: 0 / 0
17.10.2013, 18:21:36
    #38431761
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
kristoferruotsi
Код: sql
1.
2.
WHEN barcode = 2104434 THEN 101
WHEN barcode = 2104434 THEN 1640


Интересно, скоро обнаружится, что barcode не может стать 1640 в принципе?
kristoferruotsiобновляет еще и строку groupidНе верю.
...
Рейтинг: 0 / 0
17.10.2013, 18:26:56
    #38431774
kristoferruotsi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
мне нужно обновить ver_sagi на 101
где barcode = 2104434 и groupid = 21490013

и
мне нужно обновить ver_sagi на 1640
где barcode = 2104434 и groupid = 21490023

само поле barcode в запросе не изменится

во втором варианте который в первом посте, поле groupid действительно меняется
для двух строк оно становится одинаковым, а должно оставаться неотредактированным как и barcode
...
Рейтинг: 0 / 0
17.10.2013, 18:28:17
    #38431776
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
Ну и? второй запрос верен... до секции WHERE. А её тоже надо корректировать.
...
Рейтинг: 0 / 0
17.10.2013, 18:35:28
    #38431783
kristoferruotsi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
использовал запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE scupserver.scup_goods SET
ver_sagi =
CASE
WHEN (barcode = 2104434 AND groupid = 21490013) THEN 101
WHEN (barcode = 2104434 AND groupid = 21490023) THEN 1640
END
WHERE barcode IN (2104434)



на картинке в аттаче
первый вариант - до
второй - после
...
Рейтинг: 0 / 0
17.10.2013, 18:37:08
    #38431788
kristoferruotsi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
это по поводу второго поста
а по поводу секции WHERE - поясните, будьте добры, не сталкивался
...
Рейтинг: 0 / 0
17.10.2013, 19:04:52
    #38431828
kristoferruotsi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
да, попробовал на голой тестовой таблице
все гуд
походу с индексами намудрил
спасибо
кстати, после WHERE ничего не менял
...
Рейтинг: 0 / 0
17.10.2013, 19:42:18
    #38431871
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
kristoferruotsi
Код: sql
1.
2.
3.
4.
WHEN (barcode = 2104434 AND groupid = 21490013) THEN 101
WHEN (barcode = 2104434 AND groupid = 21490023) THEN 1640
END
WHERE barcode IN (2104434)

Код: sql
1.
2.
3.
4.
WHEN (barcode = 2104434 AND groupid = 21490013) THEN 101
WHEN (barcode = 2104434 AND groupid = 21490023) THEN 1640
END
WHERE (barcode,groupid) IN ((2104434,21490013),(21490013,21490023))
...
Рейтинг: 0 / 0
17.10.2013, 21:08:42
    #38431953
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
kristoferruotsiкстати, после WHERE ничего не менял
Очень плохо.
Попробуйте ввести третью запись, где barcode = 2104434, а вот groupid - не из списка.
...
Рейтинг: 0 / 0
21.10.2013, 12:17:33
    #38435283
kristoferruotsi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
у меня таких случаев не предусмотрено
но приму к сведению, и попробую перебомбить свой запрос
спасибо
...
Рейтинг: 0 / 0
21.10.2013, 13:43:43
    #38435473
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
kristoferruotsiу меня таких случаев не предусмотреноЖизнь богаче фантазии. Лучше ВСЕГДА в CASE делать секцию ELSE.
...
Рейтинг: 0 / 0
21.10.2013, 13:56:46
    #38435497
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CASE несколько параметров
Код: sql
1.
2.
3.
UPDATE scupserver.scup_goods 
SET ver_sagi = if(groupid=21490013, 101, 1640)
WHERE barcode = 2104434 and groupid in (21490013,21490023);
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / CASE несколько параметров / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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