sql >> Databasteknik >  >> RDS >> Mysql

Förälder - Barnrelation inom en enda tabell

Eftersom du har ändliga 4 nivåer bör du inte behöva rekursion (även om det skulle vara praktiskt att kunna använda t.ex. MS SQL CTEs).

Något i stil med:

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.

Om du behöver göra detta för flera noder, måste du koppla detta till något som väljer dina startnoder, eller t.ex. ersätta ovanstående WHERE t4.uid = '10007' satsen ska vara WHERE t4.uid IN (SELECT DISTINCT uid FROM your_table_name)

Detta gjordes på fri hand så jag ber om ursäkt för stavfel.




  1. Väljer första raden per grupp

  2. Ta bort ett databaspostkonto (SSMS)

  3. Erlang och dess konsumtion av Heap Memory

  4. Ingen lämplig drivrutin hittades för jdbc i Spark