Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / update парметров в модели EAV / 7 сообщений из 7, страница 1 из 1
15.02.2014, 15:47:30
    #38561847
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update парметров в модели EAV
Гы, столкнулся с задачей необходимости обновления нескольких параметров в EAV табличке... и получается что сделать одним запросом - никак?!?

Типовая табличка с хранением "по вдоль":
id fkey_id param_name value
1 2 всего 50
2 2 состояние оператор
3 2 текСтрока 5
4 2 текОбъект 10
5 2 времяСохр 21:30:20

По факту решения оператора надо одновременно изменить значения параметров "текСтрока", "текОбъект" и "время Сохр"

чего-то гадал, гадал, а одним update получается только через "пятую точку", в смысле в части set надо прописывать всё через SWITCH или IF.

А ежели "весь список" наименований параметров мне "неизвестен" втыкать в default присвой чего было ранее...

... или дублировать этот же switch в части where.
... или гонять prepare/execute в виде пачки запросов.

Есть идеи получше?

:) Это надо делать так! (Переделкин)
...
Рейтинг: 0 / 0
15.02.2014, 16:05:58
    #38561855
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update парметров в модели EAV
Arhat109... или гонять prepare/execute в виде пачки запросов.
Зачем пачки-то? Препарируешь запрос update t set value=:new_value where id=:id, а потом выполняешь его несколько раз с разными значениями new_value и id. Чтобы было "одновременно", оборачиваешь это всё в транзакцию.
...
Рейтинг: 0 / 0
15.02.2014, 16:17:42
    #38561865
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update парметров в модели EAV
Dimitry Sibiryakov,

я это и имел ввиду. Понятно что препарируешь один раз. Не хотелось в транзакцию ... :)
...
Рейтинг: 0 / 0
15.02.2014, 16:27:29
    #38561871
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update парметров в модели EAV
Arhat109,

просто это сейчас там 3-5 параметров, а в боевом варианте их будет от 50 до 500... :)
...
Рейтинг: 0 / 0
17.02.2014, 11:37:18
    #38562770
artas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update парметров в модели EAV
Arhat109,

а на клиенте генерить запрос не ?
...
Рейтинг: 0 / 0
17.02.2014, 13:14:38
    #38562879
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update парметров в модели EAV
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TEMPORARY TABLE temp (id, name, value)
SELECT  fkey_id_1, param_name_1, value_1
UNION ALL
SELECT  fkey_id_2, param_name_2, value_2
UNION ALL
...
;

UPDATE eav, temp
SET eav.value=temp.value
where eav.id=temp.id
and  eav.name=temp.name
;
...
Рейтинг: 0 / 0
17.02.2014, 17:43:06
    #38563448
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
update парметров в модели EAV
Akina,

Угу. И это похоже наиболее разумный вариант при большом наборе параметров.

На ранее: так они (запросы) у меня завсегда лезут с клиенту, поскольку ХП - пишу только когда заставят.
Имею Мнение - Х.. Оспоришь (это дабы холивар не начался): нафиг этот костыль в РА?!? :)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / update парметров в модели EAV / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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