2013-11-24 4 views
0

Я пытаюсь создать sql-запрос, который будет проверяться через таблицу, и если он не может найти строку в другой таблице с тем же идентификатором, то он изменяет поле в исходной таблице.Обновление MySQL для обновления всех строк?

UPDATE book SET reserved = 'N' WHERE not exists (SELECT * FROM reservedbooks WHERE book = $row[bookID] 

Я запускаю это в цикле в php, где $ row [bookID] представляет все идентификаторы книги. моя проблема в том, что когда он находит совпадение, он устанавливает все значения «зарезервированных» столбцов в «N», а не только тот, на который он не может найти значение.

любая помощь будет принята с благодарностью :)

+0

вам нужно добавить ИНЕКЕ обновления, чтобы указать книгу ID –

+0

ах ладно это сцепление WHERE так просто, как только добавив еще ГДЕ в конце? – user2329830

ответ

1

использовать это:

UPDATE book SET reserved = 'N' WHERE id not in (SELECT id FROM reservedbooks WHERE book = $row[bookID] 
+0

не совсем уверен, какой идентификатор должен представлять там, является ли это переменной php, присвоенной id num? просто удаляет, что там дает «Ошибка: Неизвестный столбец« id »в« списке полей »» – user2329830

+0

UPDATE book SET reserved = 'N' WHERE не существует (SELECT * FROM зарезервированных книг WHERE book = $ row [bookID]) AND bookID = $ row [bookID] спасибо за помощь, ребята! :) – user2329830

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