не работает условие в запросе удаления записи из таблицы...

Dima77

Guest
не работает условие в запросе удаления записи из таблицы...

$query=("DELETE FROM group_mest
WHERE group_mest.index_2=$index_2
AND group_mest.index_2<>member_mesto .index_2");
$result_id=mysql_query ($query)
or die ("невозможно выполнить");

пишет невозможно выполнить запрос...
если в условии одна и таже таблица, то все нормально...
такое впечатление, что условие в котором две таблицы в принципе не работают... в чем может быть причина???
опечатки в условии таблици нет...

$query=("DELETE FROM group_mest
WHERE group_mest.index_2=$index_2
AND group_mest.index_2<>group_mest.index_2");
$result_id=mysql_query ($query)
or die ("невозможно выполнить");
 

korvin0

моська
[query]в чем может быть причина???[/query]
обычно на это отвечают, что в ДНК причина... извини.
ну, а теперь расскажи, что ты хочешь сделать этим запросом и зачем ты его привел и в начале, и в конце поста.
 

korvin0

моська
и почаще переключай рубильник "голова-задница" в положение "голова" :)
 

Dima77

Guest
Originally posted by yaniks
> FROM group_mest

FROM group_mest, member_mesto

и почаще смотри mysql_error()
уже пробовал не помогает...
причем запись member_mesto тут кажется лишней, так как я запись удаляю из одной таблицы, а не из двух...

для чего такой условие, помойму и так ясно...
есть две таблицы связанные по index_2... если ни одной совпадающей записи index_2 нет тогда запись моно удалить...

с этой штукой еще не разбирался... "mysql_error()"
 

korvin0

моська
$query=("DELETE group_mest.* FROM group_mest, member_mesto
WHERE group_mest.index_2=$index_2
AND group_mest.index_2<>member_mesto.index_2");
$result_id=mysql_query ($query)
or die ("невозможно выполнить");
 

yaniks

новичок
DELETE FROM group_mest USING group_mest,member_mesto WHERE group_mest.index_2=$index_2 AND group_mest.index_2<>member_mesto.index_2

зы: Это навскидку, за работоспособность неотвечаю
 

Dima77

Guest
попробовал... ни так ни так не работает...(((((
правда, что заметил... как только поменял DELETE на SELECT,
запрос сразу заработал...
мне кажется в DELETE какой то особый синтаксис...

$query="SELECT group_mest.*
FROM member_mesto, group_mest
WHERE member_mesto.index_2=$index_2 AND member_mesto.index_2<>group_mest.index_2";
$result_id=mysql_query ($query)
or die ("невозможно выполнить");
 

Profic

just Profic (PHP5 BetaTeam)
Dima77
Вот с этой штукой "mysql_error()" тебе нужно разобраться ДО того как ты будешь писать сложные запросы. И точка. Пока не разберешься на форум лучше не приходить...

Мне интересно, почему никто не спросил версию муськи? Ведь удаление по нескольким таблицам появилось только в 4 ее версии...
 

Dima77

Guest
использовал функцию mysql_error() и вот, что выдало... :

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in F:\Home\localhost\php\group_3.inc on line 138
невозможно выполнить


использовал версию mysql-3.23.58-win
 

Dima77

Guest
я так понял надо попробовать версию муськи поставить...
какую посоветуете, так что б наверняка, а то млин 5 поставлю опять по синтаксису что то будет отличаться...(((
и кстати я удаляю запись из одной таблицы..., а не из двух...
это значение в уловии от разных таблиц...
 

_RVK_

Новичок
Dima77
В версии <4 многотабличные запросы в DELETE не поддерживаются. Ставь последнюю стабильную версию из семейства 4.х.

Насчет функции [m]mysql_error[/m]. Читай мануал, там есть примеры.
 

Dima77

Guest
Всем спасибо... скачал версию 4.1.5 и все заработало...
кстати две конструкции указанные авторами...
т.е. глюк был как в запросе, так и в версии...
функция mysql_query () не ругается и выдает "ок" (запрос работает), смущает одно в любом запросе, выборка или удаленеие
функция mysql_error () всегда пишет ошибку (), может это не принципиально раз все работает?:

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in f:\home\localhost\www\mysql.php on line 41
Невозможно выполнить запрос1


$index_2=1;
$result_id=mysql_error ("
DELETE FROM group_mest USING group_mest,member_mesto WHERE group_mest.index_2=$index_2
AND group_mest.index_2<>member_mesto.index_2
") // 41 строка
or die ("Невозможно выполнить запрос1");
die ("ок");
 

SiMM

Новичок
бегом читать в ман про [m]mysql_error[/m]
как делать запросы (с примерами) читать в мане по [m]mysql_query[/m] (хотя в первой ссылке вполне недвусмысленный пример так же имеется).
 

_RVK_

Новичок
Dima77
Пойми, что ошибки, которые выдает PHP нужно ЧИТАТЬ! Даже в ман ненужно(хоть и не вредно), что бы исправить ошибку.
 

Dima77

Guest
разобрался, thank you.

-~{}~ 25.09.04 14:34:

ну думал получилось..., ан нет...

это условие работает на самом деле не корректно (после AND)
WHERE group_mest.index_2=$index_2
AND group_mest.index_2<>member_mesto.index_2

значит повторюсь... есть две таблицы group_mest и member_mesto связанные по index_2, хочу сделать так, что бы запись из таблицы group_mest можно было бы удалить только в случае, когда такой же записи нет в таблице member_mesto...

уже и так пробовал...
AND member_mesto.index_2<>$index_2 одна малина...

мое условие получается берет любое несовпадающее значение... а не проверяет весь список...
пробовал и так
AND (NOT member_mesto.index_2=$index_2) ничего не удаляет..
так все подряд удаляет...
AND (NOT (member_mesto.index_2=$index_2))
в общем помогите разобраться...
 

yaniks

новичок
сделай два запроса,
первым выбери через left join где member_mesto.index_2 is null
а вторым удали
 
Сверху