Как обновить все поля профиля одним запросом, если эти поля являются строками, а не столбцами?
Есть таблицы:
users
[UserId][UserName]
userprofiles
[UserId][Field][Value]
То есть поля профиля пользователя являются не столбцами а строками. Например [UserId] - 1, [Field] - Password, [Value] - qwerty1
MySQL позволяет выполнить вот такой запрос
UPDATE `userprofiles`,`users` SET `Value`='pass',`users`.`UserName`='user2' WHERE `userprofiles`.`UserId`=2 AND `users`.`UserId`=2 AND `Field`='Password'
Такой запрос изменит в таблице users поле UserName, соответствующее UserId 2 на user2 и одновременно изменит в таблице userprofiles пароль пользователя на pass (за это отвечает SET `Value`='pass' и условия (`userprofiles`.`UserId`=2 AND `Field`='Password'). Но как мне изменить все остальные поля в одном запросе? Не хочется писать 10 запросов на 10 полей.
Если ставить цель - сделать в один запрос, то решение есть, на сколько оно приемлемое - не знаю..
UPDATE `userprofiles` SET
`Value` =
CASE `Field`
WHEN 'Password' THEN 'pass'
WHEN 'First name' THEN 'Ivan'
WHEN 'Login' THEN 'SkyFox'
ELSE `Value`
END
WHERE `UserId` = 2