2013-06-13 4 views
0

У меня есть две таблицы, одна таблица имеет id и username. Имя таблицы: user. У меня есть другая таблица с именем value, которая содержит id, которая предназначена для хранения идентификатора из таблицы user. В таблице value также есть столбец value и item_id, который используется для хранения предмета.Комплексное обновление Sql Statement

Я хочу написать заявление обновления, который обновляет следующие столбцы в пределах значения id, value, item_id однако значения я должен выполнить оператор является username = $username, value = $value and item_id=$item_id (на основании заявления)

Как я могу написать заявление обновления, который хранит id (имя пользователя идентификатор), value и item_id

причина с помощью оператора обновления, потому что, что пользователь может изменить значение в столбце value в любое время

ответ

0
UPDATE `value` SET `value` = $value WHERE item_id = $item_id 
AND user_id IN (SELECT id FROM `users` WHERE username = $username) 

обязательно дезинфицируйте свои входы в базу данных.

это будет обновляться только в том случае, если вы хотите создать запись (я предполагаю, что user_id и item_id являются комбинированным первичным ключом вашей второй таблицы), вы можете использовать оператор replace in.

скажите, пожалуйста, если вам это нужно, потому что я думаю, что это был не вопрос.

это может быть не так эффективно, но я думаю, что это не имеет особого значения, но вы можете, конечно, получить идентификатор пользователя сначала с помощью отдельного запроса.

это, вероятно, будет более понятным.

+0

, когда вы говорите, что будет обновлять только, что это значит, что в первую очередь это не будет вставить его в таблицу? Если это так, мне нужен код для обновления, вставьте значение, если оно там нет –

+0

точно ........ –

+0

обновлено мой комментарий извините за это –

0

Попробуйте

UPDATE value, user 
SET value = $value 
WHERE item_id = $item_id 
AND value.user_id = user.user_id 
AND user.username = $username; 
Смежные вопросы