Sto lavorando con una struttura ad albero in MySQL che è rappresentata utilizzando il modello di insiemi nidificati.Come selezionare i bambini e gli antenati immediati tutti nella stessa query
Spero che alcuni di voi esperti di sql possano aiutarmi a creare una query SELECT.
Mi piacerebbe essere in grado di abbinare un set di nodi usando LIKE. Per ogni nodo che è abbinato, ho anche bisogno di un elenco delimitato da virgole degli antenati di quel nodo e di un elenco delimitato da virgole dei figli immediati di quel nodo.
Non sono sicuro di dove cominciare, se una cosa del genere è possibile anche in una singola query. (Attualmente sto realizzando questo con una query all'interno di un ciclo.) Quello che spero è un set di risultati che potrebbe assomigliare a questo ...
A partire dalla stringa "qu" e interrogare la tabella " Corpo "I get ...
Node | Parent Nodes | Immediate Children
Quads Leg, Lower Body, Muslces Vastus Lateralus, Vastus Medialis, Rectus Femoris
Obliques Core, Trunk, Muscles Inner obliques, outer obliques
Qualsiasi suggerimento su come eseguire questo senza query in loop sarebbe molto apprezzato.
Io attualmente non ho tempo di scrivere una risposta completa, ma se si ha accesso al libro SQL Cookbook, il capitolo sulla query gerarchiche copre utilizzando MySQL per risolvere questo problema. Per MySQL, è necessario conoscere la profondità del ramo per utilizzare le query, ma questo non è un problema: sai quanto vuoi andare in profondità. La soluzione non è super-banale, ma è possibile. –
@sheepsimulator - grazie, vedrò se riesco a rintracciare quel libro. – Travis
sheepsimulator, non sono d'accordo. è banale da risolvere se sai quale profondità hai bisogno - il Santo Graal lo fa per profondità arbitraria. O meglio non santo graal, ma sai, la profondità arbitraria è ciò che rende questo problema interessante IMO –