階層型リレーショナル SQL クエリ

ご存知のとおり、階層クエリの一般的なテーブルには、親 ID のフィールドが必要です。これは通常、parent_id で表されます。検索の便宜のために、ほとんどの企業は、現在のレベルのステータスを記録するパス フィールドを設定します。現在のレベルを証明するための現在の階層チェーン内の位置。
現在のパスの情報があれば、その配下をすべて取得するのは比較的簡単です。右側をファジーマッチするだけで済みますが、現在の上位チェーンをすべて取得したい場合は、より複雑になります。上位階層には複数の配下が存在する可能性があり、現在のブランチの 1 つにすぎないため、チェーンを取得したい場合はさらに面倒になり、データベースを繰り返し呼び出して取得することは不可能です。次に、それを取得する方法を示します。

栗を取ります:

上下関係の表示

# 获取当前组织所有子组织path,#{path}是咱们自己传入的参数,为了不影响整体性,用引号包了起来
SELECT path FROM organization WHERE path LIKE CONCAT('000001', '%') and deleted = 0;

# 获取当前组织所有上级组织链中的组织path,#{path}是咱们自己传入的参数,为了不影响整体性,用引号包了起来
SELECT path FROM organization WHERE '000001' LIKE CONCAT(path, '%') and deleted = 0;

上記 2 つの SQL 実行で返された結果を示します。

  • 最初の SQL が実行された後、結果が表示されます
    部下を見せる
  • 2 回目の SQL 実行が完了すると結果が表示されます
    優れていることを示す
    注:
    クエリが上位であっても下位であっても、クエリ自体が含まれており、クエリ自身で処理する必要があることに注意してください。

おすすめ

転載: blog.csdn.net/weixin_43650254/article/details/123790038