無制限のカテゴリ削除操作

WBOY
リリース: 2016-06-23 14:22:05
オリジナル
970 人が閲覧しました

無制限の分類

親 ID に関連付けられた無限の分類テーブルを削除したい場合、その子孫をすべて削除するにはどうすればよいですか?
前のモデレーターが再帰なしでツリー配列を構築することについて書きましたので、ここでは再帰なしで削除できるすべての子孫要素を見つける方法を示します

ディスカッションへの返信(解決策)

再帰が必要ない場合、この問題はやりません。階下の偉い人たちが答えてくれることを願っています。
特に質問したいのは、「実際のアプリケーションにそのような必要があるのでしょうか? プロジェクト マネージャーは再帰の使用を許可しませんか?」
問題を解決する目的なしに問題を探すのはフーリガンです。 。 。ははは。 。 。

再帰がなければ、この問題を解決する方法がわかりません。階下の偉い人たちが答えてくれることを願っています。
特に質問したいのは、「実際のアプリケーションにそのような必要があるのでしょうか? プロジェクト マネージャーは再帰の使用を許可しませんか?」
問題を解決する目的なしに問題を探すのはフーリガンです。 。 。ははは。 。 。

もちろん、強制的なルールはありません。目標を達成するために他の方法を見つけたいだけです。モデレーターの実装プロセスを見る前と同じように、ツリー配列の構築は再帰的である必要があると常に考えていました

孤立したものを見つけて
pid が存在しないテーブルから ID を SELECT (テーブルから ID を選択)
して、対応するレコードを削除します

削除するたびに新しい孤立子が生成される可能性があるため、ループ内で実行する必要があります

おおよそ次のとおりです:

do {  $rs = mysql_query('SELECT group_concat(id) FROM 表 where pid not in(select id from 表)');  list($g) = mysql_fetch_row($rs);  mysql_query("delete from 表 where id in (g)");}where(mysql_affected_rows());
ログイン後にコピー
ログイン後にコピー

孤立者を見つける
pid が存在しないテーブルから ID を選択 (テーブルから ID を選択)
その後、対応するレコードを削除します

必須 削除するたびに新しい孤立子が生成される可能性があるため、ループで実行します

おおよそ次のようなものです:

do {  $rs = mysql_query('SELECT group_concat(id) FROM 表 where pid not in(select id from 表)');  list($g) = mysql_fetch_row($rs);  mysql_query("delete from 表 where id in (g)");}where(mysql_affected_rows());
ログイン後にコピー
ログイン後にコピー

これもアイデアですが、複数のクエリと削除操作とサブクエリがあります。

左と右の値 + 上と下の値により、息子は父親を探し、上と下の値を探し、先祖は下、左、右の値を探します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート