Неизвестная таблица multidelete в присоединенном удалить MySQL PHP - PullRequest
0 голосов
/ 17 декабря 2011

У меня есть пара таблиц, связанных следующим образом:

  1. дороги (id, name)
  2. домов (id, rid, name, housenumber), связанных с дорогами столбцом: "rid".
  3. ссуды (id, rid), связанные с дорогами столбцом: "rid".
  4. записей ссуд (id, lid, housenumber), связанных с ссудами по столбцу: "lid" и housenumber.

Когда пользователь хочет удалить дом, я должен удалить записи ссуды с определенным номером дома.

Таким образом, из идентификатора дома я получаю идентификатор дороги, после чего я могу получить ссуды, связанные с этой дорогой, и удалить все записи ссуд с крышкой и номером дома.

Я написал для этого запросы с подвыборками, но я думаю, что с объединениями это может быть намного быстрее. Я застрял здесь. Я даже не уверен, что делаю то, что хочу, и получаю сообщение об ошибке mysql:

"Неизвестная таблица 'le' в MULTI DELETE".

Я попробовал несколько вариантов, но не могу понять.

Мой запрос:

DELETE le 
FROM `roads` AS r 
LEFT JOIN `loans` AS l ON l.rid = r.id 
LEFT JOIN `loan-entries` AS le ON le.lid = l.id 
LEFT JOIN `houses` AS h ON h.rid = r.id 
WHERE h.id = '" . $_POST['id'] . "' 
  AND le.housenumber = h.housenumber

1 Ответ

1 голос
/ 20 февраля 2013

Я знаю, что немного поздно ответить на этот вопрос, но проблема в том, что вы можете удалить только крайнюю левую таблицу. Для этого вам нужно немного реорганизовать ваше объединение. Поскольку вы удаляете из таблицы 'le' с помощью левых соединений, вам действительно нужны только те значения из таблиц 'r' и 'l', которые объединяются посредством внутреннего соединения, поэтому начните с таблицы 'le', а затем внутреннего соединения 'r' и ' l, а затем продолжайте до «h».

...