Учитывая следующие таблицы:
acl (acl_id integer, name character)
ace (acl_id integer, users_id integer)
users (users_id integer, login character)
И некоторые примеры данных:
acl (0, 'view') (1, 'sell'), (2, 'void')
ace (0, 9), (1, 9), (2, 9), (0, 8)
users (8, 'joe') (9, 'john')
Я попытался сделать следующее:
DELETE FROM ace
WHERE ace.acl_id = acl.acl_id AND acl.name = ?
AND ace.users_id = users.users_id AND users.login = ?
, но это не удалось в sqlite3_prepare_v2()
с SQLITE_ERROR "нет такого столбца: acl.acl_id" (что не очень полезно)
Я получаю тот же результат с:
DELETE FROM ace
WHERE acl_id = acl.acl_id AND acl.name = ?
AND users_id = users.users_id AND users.login = ?
К счастью, страшно:
DELETE FROM ace,acl,users
WHERE ace.acl_id = acl.acl_id AND acl.name = ?
AND ace.users_id = users.users_id AND users.login = ?
завершается ошибкой с синтаксической ошибкой на первой запятой.
Если я доберусь достаточно далеко, чтобы связать значения 'sell' и 'john' с параметрами, ичтобы выполнить запрос, я бы ожидал, что строка (1, 9) таблицы ace будет удалена.
Можно ли это сделать, не выполнив сначала два SELECT, чтобы получить значения acl_id и users_id?