2014-12-05 177 views
0

我想更新另一個表中使用和更新並加入。更新查詢兩個表

我願與類別id字段更新category領域(最近一次插入) - 我要去哪裏錯了?

UPDATE book 
    JOIN category 
    SET book.category = category.id 
    WHERE id = $query->insert_id 

當前數據分別發送到兩個表,沒有更新。我只需要更新一行,我早先犯了這個錯誤,並更新了每一行!

我是非常新的pho/mysql,所以任何幫助和方向是值得歡迎的。

UPDATE

由於建議從@Benni我能夠更新該行,但它不更新與最近一次插入但在我的數據庫中的第一行。見下面

我的類別表

id cat_name 
2 Childrens 
3 Science 
1 Maths 
23 Comedy 

我的書表

id category title 
1 2   a title here 
2 2   a title here 
3 1   a title here 
4 Comedy  a title here 

這兩個ID字段是主鍵。

當我運行更新時,我的書籍表更新爲2 = Childrens,而不是23 =喜歡它的喜劇。

我最後INSERT

$query = $conn->prepare("INSERT INTO `book` (title,category,author,isbn,subtitle) VALUES (?,?,?,?,?)"); 
$query->bind_param('sssis',  
     $title, 
     $category, 
     $author, 
     $isbn, 
     $subtitle 
     ); 
$query->execute(); 
+0

您可能知道要放入書籍的類別的ID。只需將其放入用於創建書籍的「INSERT」查詢即可。 – axiac 2014-12-05 16:07:26

+0

向我們展示更多代碼。目前還不清楚你最後一次INSERT是什麼,你想達到什麼目的。 – axiac 2014-12-05 16:15:34

回答

1

UPDATE聲明應該如下。首先您缺少JOIN ON條件,第二,將額外條件從WHERE移至JOIN ON條件。

UPDATE book b 
    JOIN category c ON b.some_common_column = c.some_common_column 
    AND c.id = $query->insert_id 
    SET b.category = c.id 
+0

您可以共享您的書籍和類別的表格結構以及少量樣本數據。發佈的代碼在答案應該工作得很好。 'some_common_column'是表格之間的一個共同的列,您可以將它們關聯起來或加入它們。這兩張桌子之間是否有任何關係? – Rahul 2014-12-05 16:47:24

-1

您將在ON部分的您加入我們擰。試試這個:

UPDATE book, category 
SET book.category = category.id 
WHERE book.id = $query->insert_id 

或(與JOIN語法):

UPDATE book 
JOIN category 
ON book.id = $query->insert_id 
SET book.category = category.id 
+0

爲什麼downvote? – Benvorth 2014-12-05 16:11:38

+0

不知道。這工作,但它更新我的表中的每一行!我只想更新最近的一行。 – 2014-12-05 16:12:24

+0

你認爲「最近的一排」是什麼? – Benvorth 2014-12-05 16:13:30