Вот мой запрос:
$query="Delete b
Where Exists
(
Select 1
From a
Where a.poster_password = '$pass'
And a.ad_id = '$id'
And a.classified_id = b.classified_id
)
Delete a
Where a.poster_password = '$pass'
And a.ad_id = '$id'";
Я получаю эту ошибку:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "Где существует" (выберите "1 из a a.poster_p" в строке 2
Если вам нужно больше ввода, дайте мне знать...
Что здесь не так?
Спасибо
UDPATE:
Просто Q: Нужно ли также указывать, что a = "эта таблица" и b = "другая таблица" или MySql получает это по этому коду?
Что касается нового кода, в котором будет использоваться точка FROM и точка с запятой terminator, не будет работать и дать эту ошибку:
У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "Удалить FROM a Where a.poster_password = 'xxxxxxxxxxxxxxxxxxxxx" в строке 10
UPDATE2:
$query="Delete FROM $sql_table
Where Exists
(
Select 1
From classified
Where classified.poster_password = '$pass'
And classified.ad_id = '$id'
And classified.classified_id = $sql_table.classified_id
);
Delete FROM classified
Where classified.poster_password = '$pass'
And classified.ad_id = '$id'";
И когда я echo $query
: (fordon в этом случае имеет переменную $sql_table
.)
Delete FROM fordon
Where Exists
(
Select 1
From classified
Where classified.poster_password = 'xxxxx'
And classified.ad_id = 'motorbat_166250627'
And classified.classified_id = fordon.classified_id
);
Delete FROM classified
Where classified.poster_password = 'xxxxx'
And classified.ad_id = 'motorbat_166250627'
Еще раз спасибо
Вы не указываете удаляемые таблицы. Попробуйте:
$query="Delete FROM b
Where Exists
(
Select 1
From a
Where a.poster_password = '$pass'
And a.ad_id = '$id'
And a.classified_id = b.classified_id
);
Delete FROM a
Where a.poster_password = '$pass'
And a.ad_id = '$id'";
Я также добавил в точку с запятой после окончания первого запроса DELETE. Если вы хотите запустить оба одновременно, для завершения первого запроса вам потребуется разделитель, прежде чем запускать вторую версию.
Re. ваш вопрос о том, как MySQL "получает" таблицы - если a
и b
являются псевдонимами здесь, то нет, MySQL не знает, что a
и b
есть. Вам нужно будет с псевдонимом таблицы или заменить a
и b
на фактические имена таблиц.
Два удаления должны быть отдельными операторами (и выполняться отдельно).
FROM
.
Delete a
) и выполнить только первый?