0

データを含むテーブルに次の構造があります

ここに画像の説明を入力

上記のデータから、組織 ID が指定されているすべてのサブ組織を検索したい場合は、どうすればそれを見つけることができるとしましょう。

ここで、組織 ID = 10707 (主要組織) の場合に、再販業者 A、再販業者 B、広告主 A、広告主 B を表示するにはどうすればよいですか?

私のテーブル名は organization_ で、

親組織 ID

その特定の組織の親組織を説明する各行。

したがって、メイン組織の ID に 10707 を指定すると、その組織 ID を持つすべてのサブ組織が返されます。

4

2 に答える 2

2

階層データにはさまざまなモデルがあります。テーブルで「隣接リスト」と「パス列挙」の両方を使用しているようです。それらについては、MySQL のさまざまなモデルと実装について説明している Bill Karwin のスライドショーで読むことができます: SQL を使用した階層データのモデル

したがって、treePath列を使用すると、必要なクエリはかなり単純になります。

SELECT
    GROUP_CONCAT(t.name) AS SubOrganizations
FROM
    tableX AS t
  JOIN
    tableX AS p
      ON  t.treePath LIKE CONCAT( p.treePath, '%') 
      AND t.organizationId <> p.organizationId 
WHERE
    p.organizationId = 10707 ;
于 2013-01-07T09:46:14.157 に答える
0

つまり、他のRDMBS(SQL Server、Oracle)とは異なり、MySqlは再帰クエリをサポートしていません。

このサイトからのあなたのための主題に関するいくつかの役立つリンク:

于 2013-01-07T07:10:32.590 に答える