2014-01-14 54 views
1

我有2個mysql表在數據庫中通過descriptionId字段連接起來。如何在UPDATE語句中使用INNER JOIN?

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

descriptionLookupTable.descriptionId 
descriptionLookupTable.descriptionName 

在PHP中,我試圖更新字段:dataTable.value,當dataTable.descriptionID = GenderdataTable.userId = $_SESSION['userId']

例如在descriptionLookupTable中:descriptionLookupTable.descriptionId = 1descriptionLookupTable.descriptionName = Gender。並在dataTable:dataTable.descriptionID = 1

據我所知,通過與用戶ID交易的一部分:

"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

謝謝但是當我嘗試它時,我得到錯誤信息:未知列'dataTable.Gender'in '字段列表 – user2646006

回答

1

性別顯然是不是在你的表中的列。其中一個場必須命名爲性別你可以更新其內容

約試圖更新一個字段,它是在你的表:)什麼:

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

謝謝,但是當我嘗試它時,我得到錯誤信息:'字段列表'中的未知列'dataTable.value'。 – user2646006

+0

嗯。爲什麼mysql會爲連接識別dataTable.descriptionId,而不是dataTable.value。你確定大寫字母和你的領域的名字?你可以發佈你的表格結構嗎?就像phpmyadmin的輸出結果一樣,只輸出到屏幕 –

+0

哦,並確保將性別作爲VolkerK所說的冒號「性別」。這實際上是您排除列名問題後遇到的問題 –

0
descriptionLookupTable.descriptionName = Gender 

在這種情況下Gender是一個字符串文字,所以你必須將其標記爲這樣

descriptionLookupTable.descriptionName = 'Gender' 
+0

是的,我試過了,但我得到了同樣的答案。不過謝謝。 – user2646006

+0

不知道爲什麼會被拒絕。你需要這些冒號工作,即使這不是第一個問題,將出現在查詢 –