Visualizzazione risultati 1 fino 2 di 2

Discussione: mysql e nested trees

  1. #1
    incuso non è connesso Utente
    Data registrazione
    27-09-2003
    Messaggi
    173

    Question mysql e nested trees

    Sto cercando di applicare il sistema del nested set model descritto in:

    http://dev.mysql.com/tech-resources/...ical-data.html

    praticamente mi funziona già quasi tutto. L'unica cosa che non riesco a fare è calcolare la profondità di un sottoalbero. Infatti la sequente query non funziona:


    Codice:
    SELECT node.name, (COUNT(parent.name) - (sub_tree.depth + 1)) AS depth
    FROM nested_category AS node,
    	nested_category AS parent,
    	nested_category AS sub_parent,
    	(
    		SELECT node.name, (COUNT(parent.name) - 1) AS depth
    		FROM nested_category AS node,
    		nested_category AS parent
    		WHERE node.lft BETWEEN parent.lft AND parent.rgt
    		AND node.name = 'PORTABLE ELECTRONICS'
    		GROUP BY node.name
    		ORDER BY node.lft
    	)AS sub_tree
    WHERE node.lft BETWEEN parent.lft AND parent.rgt
    	AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
    	AND sub_parent.name = sub_tree.name
    GROUP BY node.name
    ORDER BY node.lft;
    ovviamente il DB e i dati li ho inseriti paro paro come da descrizione.

    Immagino che possa dipendere dal fatto che la versione di mysql di altervista sia differente da quella utilizzata da chi ha scritto quell'articolo.

    Qualcuno ha idee su come risolvere questo problema?

    Grazie,
    Massimo

  2. #2
    incuso non è connesso Utente
    Data registrazione
    27-09-2003
    Messaggi
    173

    Predefinito

    Ok mi rispondo da solo, ho trovato una soluzione alternativa che forse è piú inefficiente ma che è molto ma molto piú semplice:

    Codice:
    SELECT node.name, (COUNT(rp.name)) as depth 
    FROM nested_category AS node, nested_category AS parent, nested_category AS rp 
    WHERE node.lft BETWEEN parent.lft AND parent.rgt 
    AND node.lft BETWEEN rp.lft AND rp.rgt 
    AND parent.name='PORTABLE ELECTRONICS' GROUP BY node.name ORDER BY node.rgt DESC;

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •