ID、ParentID、Name、NestLevel の列を持つ、カテゴリと呼ばれる phpmyadmin のテーブルがあります。
現時点では、Nest レベル以外はすべて設定済みです。そして、各カテゴリがツリー内のどのレベルにあるかを調べたいと思います。
そこで、ググってみたところ、以下の記事を見つけました。
ただし、これは mysql ではなく sql サーバー用です。問題のスニペットは次のとおりです。
-- Step #1: Add [Level] Column to the Table
ALTER TABLE [dbo].[Hierarchy] ADD [Level] INT NULL
GO
-- Step #2: Set Level = 1 For Rows With No Parents
UPDATE [dbo].[Hierarchy]
SET [Level] = 1
WHERE [ParentID] IS NULL
GO
-- Step #3: Set the Level of all Remaining Rows
WHILE (SELECT COUNT(*) FROM [dbo].[Hierarchy] WHERE [Level] IS NULL) > 0
BEGIN
UPDATE A
SET [Level] = B.[Level] + 1
FROM [dbo].[Hierarchy] A INNER JOIN [dbo].[Hierarchy] B
ON A.[ParentID] = B.[ID]
WHERE A.[Level] IS NULL AND
B.[Level] IS NOT NULL
END
GO
したがって、最初にすべての [] と GO、END、BEGIN のすべてのインスタンスを削除し、[dbo].[hierarchy] のすべてのインスタンスをcategories
.
これで、ステップ 1 と 2 は完全に機能します。ただし、ステップ 3 でエラーが発生し、その理由がわかりません。
また、最終的には、phpスクリプトを介してこれをすべて呼び出します(これが答えに違いをもたらす場合):
$sql = "query";
database_queryModify($sql,$result);
誰でも問題を知っていますか?
ありがとうジョン
編集:私が得るエラーは次のとおりです:
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near
'WHILE SELECT COUNT(*) FROM categories WHERE Level IS NULL > 0 UPDATE A '
at line 1