sql >> データベース >  >> RDS >> Mysql

SQLの単一のクエリでカテゴリとサブカテゴリをフェッチするにはどうすればよいですか? (mysql)

    「mysql再帰クエリにありますか?」について質問する場合「いいえ」と答えてください。

    しかし、それを処理するための非常に優れたアプローチがあります。

    ヘルパーテーブルを作成します(CatHierarchyと言います)

    CatHierarchy:
        SuperId, ChildId, Distance
    ------------------------------ 
         1          1         0
         1          2         1
         2          2         0
    

    この冗長データにより、1つのクエリで任意の階層を簡単に選択でき、2つの挿入で任意の階層をサポートできます(削除はカスケード整合性の削除を利用して1つのクエリでも実行されます)。

    では、これはどういう意味ですか。階層内のすべてのパスを追跡します。 Catの各ノードは、それ自体への参照を追加する必要があり(距離0)、ノードに関する冗長データを追加することで複製をサポートします。

    サブでカテゴリを選択するには、次のように記述します。

     SELECT c.* from Category c inner join CatHierarchy ch ON ch.ChildId=c.cat_id
          WHERE ch.SuperId = :someSpecifiedRootOfCat
    

    someSpecifiedRootOfCat-categoryTHATS ALL!

    のルートを指定するパラメーターです。

    1. ASP.NETのmysqlパラメータ化クエリ

    2. エラー:MySQLが予期せずシャットダウンしました。 XamppでMysqlを起動しようとしている間

    3. マラヤーラム語のMysqlへのデータの挿入

    4. JSONフィールドへの更新はDBに保持されません