sql >> Databasteknik >  >> RDS >> Mysql

Platta till ett träd i MySQL?

Med ditt exempel skulle du kunna arbeta bort underuppsättningen av föräldrars namn i barn om förälders namn skulle finnas i anhörigas namn. Om så är fallet, överväg en facklig fråga:

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

Självklart justera Len() , Left() , eller Mid() strängfunktioner och utöka (d.v.s. barnbarn) enligt faktiska Ancestry-namnmönster. Den här lösningen fungerar inte om det inte finns någon referens till föräldrar i underordnade strängvärden.



  1. Välj flera fältdubbletter från MySQL Database

  2. Databasnamnkonventioner från Microsoft?

  3. MySQL:Uppdatera alla rader i en tabell som matchar resultaten av en annan fråga

  4. Hur löser jag mysql port 3306-felet på wamp?