Mysql
 sql >> Database >  >> RDS >> Mysql

mysql per ottenere la profondità del record, contare i record dei genitori e degli antenati

Se stai facendo molte query come questa, potresti scoprire che un modello di set nidificato è più appropriato dell'elenco di adiacenze di cui stai chiedendo. C'è una buona discussione su entrambi i modelli qui .

In ogni caso, per fare ciò che stai chiedendo con un elenco di adiacenze, stai osservando la ricorsione nel livello dell'applicazione o memorizzando il livello come una terza colonna.

ETA:se il tuo numero di livelli non è molto alto, puoi farlo con i self join:

per esempio. nodi con 2 antenati:

SELECT t1.node 
FROM mytable AS t1
JOIN mytable AS t2 ON t1.parent = t2.node
JOIN mytable AS t3 ON t2.parent = t3.node
WHERE t3.parent IS NULL;