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

MySQLでツリーをフラット化しますか?

    あなたの例を使用すると、親の名前が扶養家族の名前の中に含まれている場合、子の親の名前のサブセットを処理することができます。もしそうなら、ユニオンクエリを検討してください:

    # GREAT-GRANDPARNTS
    SELECT DISTINCT Null As Parent, Parent As Dependent
    FROM Ancestry
    WHERE Len(Parent) = 1
    
    UNION
    
    # GRANDPARNTS
    SELECT DISTINCT Left(Parent, 1) As Parent, Parent As Dependent
    FROM Ancestry
    WHERE Len(Parent) = 3
    
    UNION
    
    # PARENTS
    SELECT DISTINCT Left(Child, 1) As Parent, Child As Dependent
    FROM Ancestry
    WHERE Len(Child) > 3
    
    UNION
    
    # CHILDREN
    SELECT DISTINCT Left(Child, 3) As Parent, Child As Dependent
    FROM Ancestry
    WHERE Len(Child) > 3;
    

    もちろん、Len()を調整します 、Left() 、またはMid() 文字列は、実際の祖先の名前のパターンに従って機能し、拡張します(つまり、孫)。子文字列値に親の参照がない場合、このソリューションは機能しません。



    1. Oracle Database Developer Choice Awards

    2. ローカルのMySQLデータベースに接続するためのPython3.2スクリプト

    3. MySQL GaleraCluster4.0をAmazonAWSEC2にデプロイする

    4. 最初のデータを繰り返さずに2つのテーブルのデータ?