sql >> Database >  >> RDS >> Mysql

Een boom plat maken in MySQL?

Als u uw voorbeeld gebruikt, kunt u de subset van de namen van de ouders in kinderen afwerken als de namen van de ouders in de namen van de personen ten laste staan. Als dat zo is, overweeg dan een vakbondsvraag:

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

Natuurlijk aanpassen Len() , Left() , of Mid() tekenreeksfuncties en uitbreiden (d.w.z. kleinkinderen) volgens de werkelijke naampatronen van de voorouders. Deze oplossing werkt niet als er geen verwijzing naar ouders is in onderliggende tekenreekswaarden.



  1. STRING_AGG() Functie in PostgreSQL

  2. mysqldump-versie Fout bij het exporteren van gegevens uit MySQL

  3. Waarom gebruikt Postgres de index niet?

  4. Spring Data met Mysql JSON-type