0

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
4

0 に答える 0