[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление множества данных одним запросом
agentor
собственно у меня возник такой вопрос по ходу написания одной функции.
Возможно ли сделать удаление данных одним запросом не исползуя множество как на примере

PHP
mysql_query("DELETE FROM user WHERE id=".sqlesc($usrd["id"])."");
mysql_query("DELETE FROM user_freunde WHERE u1=".sqlesc($usrd["id"])." OR u2=".sqlesc($usrd["id"])."");
mysql_query("DELETE FROM blogs WHERE user=".sqlesc($usrd["id"])."");
mysql_query("DELETE FROM blogs_data WHERE user=".sqlesc($usrd["id"])."");
mysql_query("DELETE FROM blogs_kommentare WHERE user=".sqlesc($usrd["id"])."");
@
unlink("fotos/a_".sqlesc($usrd["id"])."_b.jpg");


я тут немного подумал и решил написат вам знатокам и показать пример удаления.
Как можно сделать что то подобии для полноценной работы

PHP
foreach(explode(".","user.user_fotos.gaestebuch.fotos_kommentare.fotos_alben.wermachtwas.user_freunde") as $x)
foreach(
explode(".","id.user.user.user.user.user.userid") as $where)
mysql_query("DELETE LOW_PRIORITY FROM ".$x." WHERE ".$where." = ".sqlesc($usrd["id"])."")or die("Error 1");
@
unlink("fotos/a_".sqlesc($usrd["id"])."_b.jpg");


Принцип:
Переменная $x указывает какая база т.е к примеру users
Переменная $where указывает при каком результате т.е к примеру WHERE user= 235



Спустя 1 час, 2 минуты, 57 секунд (9.09.2009 - 00:25) Alchemist написал(а):
сделать можно.

соединяй таблицы обычными JOIN'ами только в начале в отличие от простого удаления укажи из каких именно таблиц удалять данные.

Пример:
PHP
DELETE table_a.*, table_b.*
FROM `table_a` INNER JOIN `table_b` ON (table_a.id = table_b.id)
    LEFT JOIN `table_c` ON (table_a.name = table_c.name)
WHERE table_a.expire < NOW() OR table_c.user = {USER_ID}

Тут удалятся соответствующие строки в таблицах table_a и table_b, но не в table_c, хотя она тоже участвует в JOIN'е и даже в WHERE.

Спустя 18 часов, 29 минут, 51 секунда (9.09.2009 - 18:55) agentor написал(а):
да но как быть если WHERE разные?

Спустя 2 часа, 35 минут, 52 секунды (9.09.2009 - 21:31) sergeiss написал(а):
Понял, что был не прав, удалил свой ответ rolleyes.gif

Спустя 3 минуты, 41 секунда (9.09.2009 - 21:35) kirik написал(а):
На сколько я понимаю, грамотнее всего воспользоваться внешними ключами.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.