Sql синтаксическая ошибка - PullRequest
0 голосов
/ 04 июня 2010

Вот мой запрос:

$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.poster_p» в строке 2

Если вам нужно больше информации, дайте мне знать ...

Что здесь не так?

Спасибо

UDPATE:

Просто вопрос: мне нужно также указать, что a = "эта таблица" и b = "другая таблица" или MySql получает это по этому коду?

Что касается нового размещенного кода, где использовать FROM и точку с запятой, он не будет работать и выдаст эту ошибку:

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с «Удалить из a, где 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'

Еще раз спасибо

Ответы [ 2 ]

1 голос
/ 04 июня 2010

Вы не указываете таблицы для удаления. Попробуйте:

$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 фактическими именами таблиц.

0 голосов
/ 04 июня 2010

Два удаления должны быть отдельными операторами (и выполняться отдельно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...