2014-12-05 3 views
0

Я пытаюсь обновить одну таблицу из другой, используя и обновляю и присоединяюсь.Update Query Two Tables

Я хотел бы обновить книги таблицы category поля (последняя вставка) с категории таблицы id поля - где я буду неправильно?

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

Возможно, вы знаете идентификатор категории, в которую вы хотите поместить свою книгу. Просто поместите его в запрос 'INSERT', который вы используете для создания книги. – axiac

+0

Покажите нам больше кода. Неясно, каков был ваш последний «INSERT» и чего вы хотите достичь. – axiac

ответ

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

-1

Вы собираетесь отжимать в ON части вашего соединения. Попробуйте это:

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

Or (с JOIN Синтаксис):

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

Почему downvote? – Benvorth

+0

Не знаю. Это работает, однако он обновляет каждую строку в моей таблице! Я только хотел обновить последнюю строку. –

+0

По какой колонке вы бы определили «самую последнюю строку»? – Benvorth