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

Srovnat strom v MySQL?

Pomocí vašeho příkladu byste mohli vypracovat podmnožinu jmen rodičů u dětí, pokud by jména rodičů byla obsažena ve jménech závislých osob. Pokud ano, zvažte sjednocovací dotaz:

# 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;

Samozřejmě upravte Len() , Left() nebo Mid() řetězcové funkce a rozšíření (tj. vnoučata) podle skutečného vzorování jmen předků. Toto řešení nebude fungovat, pokud v hodnotách podřízených řetězců není žádný odkaz na rodiče.



  1. Automatický sloupec může být pouze jeden

  2. Hibernace> CLOB> Oracle :(

  3. Získejte poslední vložené ID pomocí Mysql

  4. PHP Ukládání relací do databáze. Zdá se, že metoda čtení nefunguje