2014-01-14 4 views
1

У меня есть две таблицы mysql, которые объединены в базе данных через поле descriptionId.Как использовать INNER JOIN в инструкции UPDATE?

dataTable.dataId 
dataTable.descriptionId 
dataTable.userId 
dataTable.value 

descriptionLookupTable.descriptionId 
descriptionLookupTable.descriptionName 

В PHP я пытаюсь обновить поле: dataTable.value, когда dataTable.descriptionID = Gender и dataTable.userId = $_SESSION['userId'].

Например, в описанииLookupTable: descriptionLookupTable.descriptionId = 1 и descriptionLookupTable.descriptionName = Gender. И в dataTable: dataTable.descriptionID = 1.

Я понимаю ту часть, которая имеет дело с идентификатором пользователя, используя:

"WHERE dataTable.userId = '" . $_SESSION['userId'] . "'"; 

Но я не могу понять, как использовать INNER JOIN.

Следующий запрос не работает.

$query = "UPDATE dataTable 
    INNER JOIN descriptionLookupTable 
    ON dataTable.descriptionId = descriptionLookupTable.descriptionId 
    AND descriptionLookupTable.descriptionName = Gender 
    SET Gender = '$gender' WHERE dataTable.user_id = '" . $_SESSION['user_id'] . "'"; 

Сообщение об ошибке: Unknown column 'Gender' in 'field list'.

+0

http://stackoverflow.com/ Вопросы/8057565/mysql-update-statement-inner-join-tables –

+0

Попробуйте это 'SET dataTable.Gender = '...'' –

+0

Спасибо, но когда я попробую, я получаю сообщение об ошибке msg: Неизвестный столбец 'dataTable.Gender' в 'список полей – user2646006

ответ

1

Пол, по-видимому, не столбец в таблице. Один из поля должен быть назван Пол для вас, чтобы иметь возможность обновлять его содержание

, что о попытке обновить поле, которое в таблице :):

SET dataTable.value = '$gender' WHERE dataTable.user_id = '" . $_SESSION['user_id'] . "'"; 
+0

Спасибо, но когда я попробую, я получаю сообщение об ошибке msg: Неизвестный столбец «dataTable.value» в «списке полей». – user2646006

+0

hmmm. как mysql распознает dataTable.descriptionId для соединения, но не dataTable.value. вы уверены в капитализации и имени ваших полей? Вы могли бы разместить структуру своих таблиц? как вывод phpmyadmin, когда вы экспортируете структуру только на экран –

+0

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

0
descriptionLookupTable.descriptionName = Gender 

Gender в этом случае является строковым, поэтому вы должны пометить его как таковой

descriptionLookupTable.descriptionName = 'Gender' 
+0

Да, я пробовал это, но я получаю тот же ответ. Спасибо хоть. – user2646006

+0

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

Смежные вопросы