![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
MaliceInWonderland |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
Задача: каскадно удалить 555000 ($id) и все зависимые от него прямо или косвенно поля (зависимость отображается в полях pid, pid2). Количество вложенных уровней заранее неизвестно.
Например: +------------+------------+--- | id | pid | pid2 | +-----------------------------+ | 555000 | 000000 | 000000 | | 555001 | 555000 | 000000 | | 327000 | 555000 | 555001 | | 327001 | 327000 | 000000 | | 327002 | 327000 | 333000 | +------------+------------+---- И.т.д. Пыталась написать вложенный запрос, но данные теряются:
|
|||
|
||||
muzer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 31.8.2006 Репутация: 30 Всего: 31 |
Если я правильно понял проблему, вам поможет конструкция "DELETE FROM table1, table2 USING table1, table2, table3 WHERE ..."
При таком запросе данные удалятся из таблиц table1 и table2. При выборке записей, которые нужно удалить, будут использоваться таблицы table1, table2, table3 (их можно перечислять как в SELECT'е, то есть, например, использовать разные JOIN'ы). |
|||
|
||||
igorold |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: 5 Всего: 17 |
нет, он же говорит - удалить все зависимые записи т.е. я так понял, что если удаляемое значение id=555000, то нужно удалить запись и с id=555001 и с id=327000 и т.д. - в данном примере, хотя если я правильно понял, то в приведенном примере придется удалить все записи ... или MaliceInWonderland, уточнить условие ... ![]() -------------------- ... у семи нянек 14 сисек ... Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
MaliceInWonderland |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
да. пример не совсем корректный. придется удалить все записи (они все связаны с 555000) |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 7 Всего: 146 |
А Foregin Keys-ы с каскадным удалением не подойдут? Конечно, придется следить, за тем что бы не было "левых" id, но зато можно удалять одним простым запросом
Иначе нескольками SELECT-ами или хранимкой. |
|||
|
||||
MaliceInWonderland |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
справилась с помощью пошаговой пометки в поле status_del.
выполняю запрос 1 уровня и присваиваю значение 1. и.т.п.
|
|||
|
||||
igorold |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: 5 Всего: 17 |
а как же вложенность? как с этим справилась? -------------------- ... у семи нянек 14 сисек ... Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
MaliceInWonderland |
|
||||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.4.2007 Репутация: нет Всего: нет |
+ PHP
некрасиво, но иначе не получается. Это сообщение отредактировал(а) MaliceInWonderland - 27.6.2007, 12:46 |
||||
|
|||||
igorold |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: 5 Всего: 17 |
ну это у тебя получилось как бы 2 уровня зависимости отследить, а ты же говорила их больше ... ?
-------------------- ... у семи нянек 14 сисек ... Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |