2012-02-20 5 views
1

階層構造用のネストセットを作成して、MSSQL 2008 Expressデータベース上のWebサイトのカテゴリテーブルを作成する方法を検討しました。おかげで事前MS SQL版MySQLリピート機能

+0

サンプルのデータと必要な結果を表示できるので、MySQLの構文に慣れていない人は、あなたが求めているものを理解できますか? –

+0

@AaronBertrandそれは単なる文字列繰り​​返しコマンドのようです。この例では、 'REPLICATE'のようにサブカテゴリを親カテゴリの下にインデントしています。 – JNK

+0

@JNK右には' REPLICATE'の部分がありますが、 'CONCAT'関数をシミュレートしたいと思いますSQL Serverには同等のものはありません(SQL Server 2012には1つありますが、グループ連結ではありません)。入力と希望する出力を理解することは、その部分にも役立ちます。それ以外の場合は、ネストセットタグとすべてのクエリの詳細を気にする必要はありませんか? –

答えて

3

に私はあなたが探していると信じて

SELECT CONCAT(REPEAT(' ', (COUNT(parent.name) - 1)), node.name) AS name 
FROM nested_category AS node, 
    nested_category AS parent 
WHERE node.lft BETWEEN parent.lft AND parent.rgt 
GROUP BY node.name 
ORDER BY node.lft; 

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/と次の文でREPEAT機能のMSSQLのバージョンがあると思いまして。私は、MySQLのために書かれたこのガイドを追っていますREPLICATEのために:

SELECT REPLICATE(' ', COUNT(parent.name) - 1) + node.name AS name 
FROM nested_category AS node, 
nested_category AS parent 
WHERE node.lft BETWEEN parent.lft AND parent.rgt 
GROUP BY node.name 
ORDER BY node.lft; 
0

あなたは同じ効果のために同じ順序で同じパラメータを取りTSQLのREPLICATE()機能を探しています。

編集:私は明らかにする必要がありますが、カウントが負であるような境界のケースでいくつかの違いがありますが、 "通常の"使用の場合、それは同じ機能のように振る舞います。

関連する問題