LINUX.ORG.RU

SQL help


0

0

Есть таблица MESSAGE В ней есть поля: M_ID INTEGER M_PARENT_ID INTEGER С их помощью получается иерархическая система сообщений. Можно ли одной SQL командой удалить сообщение с определённым M_ID, всех его детей, внуков и тд. Что-то вроде DELETE FROM MESSAGE WHERE M_ID = id OR M_PARENT_ID = M_ID Но это конечно удалит намного больше..

anonymous

Если речь идет об SQL, то нельзя.

Если о том, что используется некоторой конкретной DBMS, то это может оказаться вполне возможно. См., например, http://www.adp-gmbh.ch/ora/sql/connect_by.html

anonymous
()

А вот в Oracle, помниться, все прекрасно делалось c применением connected by... :)

anonymous
()

Почитай дружок про SQL NESTED SETS и перестань маяться хернёй с идентификаторами родителей - это чушь. Есть куча куда более производительных и эффективных методов работы с деревьями в SQL. Так же рекомендую книжонку SQL FOR SMARTIES.

Про CONNECTED BY ORACLE не слушай - это костыли которые по эффективности равны куче SQL запросов как если бы ты это делал в рекурсивной функции из скрипта.

Ubnormal
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.