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

親-1つのテーブル内の子の関係

    レベルは4つに制限されているため、再帰は必要ありません(ただし、MS SQL CTEなどを使用できると便利です)。

    次のようなもの:

    SELECT
      t4.uid as child, 
      --t3.uid as parent,
      --t2.uid as grand_parent,
      --t1.uid as great_grand_parent,
      t1.parentid as great_great_grand_parent
    FROM
      your_table_name t1
    
      inner join your_table_name t2
      on t2.parentid = t1.uid
    
      inner join your_table_name t3
      on t3.parentid = t2.uid
    
      inner join your_table_name t4
      on t4.parentid = t3.uin
    
    where 
      t4.uid = '10007' -- your start node.
    

    複数のノードに対してこれを行う必要がある場合は、これを開始ノードを選択するものに結合するか、たとえば上記のWHERE t4.uid = '10007'を置き換える必要があります。 WHERE t4.uid IN (SELECT DISTINCT uid FROM your_table_name)となる句

    これはフリーハンドで行われたため、タイプミスについてお詫びします。




    1. SQLite-テーブルを変更する

    2. T-SQLの文字列から拡張ASCII文字を削除するにはどうすればよいですか?

    3. タイムゾーンなしで文字列をタイムスタンプに変換する方法

    4. MySQL列をAUTO_INCREMENTに変更します