sql >> Databáze >  >> RDS >> Mysql

Vztah nadřazený – podřízený v rámci jedné tabulky

Vzhledem k tomu, že máte konečné 4 úrovně, neměli byste rekurzi potřebovat (ačkoli by bylo užitečné používat např. MS SQL CTE).

Něco jako:

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.

Pokud to potřebujete udělat pro více uzlů, musíte to připojit k něčemu, co vybírá vaše počáteční uzly, nebo např. nahradit výše uvedený WHERE t4.uid = '10007' klauzule být WHERE t4.uid IN (SELECT DISTINCT uid FROM your_table_name)

Bylo to provedeno od ruky, takže se omlouvám za překlepy.




  1. Jak vytvořit vnořené menu z MySQL s PHP?

  2. Snažím se jednoduchý dotaz s parametrem v mysql 5.5 přes kód jdbc

  3. Jak změnit znakovou sadu z latin1 na UTF8 v MySQL

  4. Base64 jako metoda dezinfekce uživatelského vstupu pro Mysql