Ora che sappiamo come allocare categorie, sottocategorie e informazioni creando e rispettando un ordine gerarchico stabilito all'interno di una base di dati MySQL, non ci resta che affrontare l'ultimo argomento della nostra discussione, la soluzione alla domanda finale: "Come estrarre i dati rispettando l'ordine gerarchico?".
Va da sè che estrarre il nome delle diverse categorie risulta un esercizio abbastanza agevole attuabile attraverso un semplice ciclo, lo stesso dicasi per la possibilità di estrarre tutte le sottocategorie o tutte le informazioni della tabella "Contenuti". Ma non è questo ciò che ci interessa.
In realtà a noi interessa formulare query che ci permettano di sfruttare le ramificazioni rese possibili dalla struttura del nostro database. Quindi, sarà interessante evidenziare come estrarre tutte le sottocategorie relative ad una determinata categoria, tutti i contenuti relativi ad una categoria e infine, tutti i contenuti relativi ad una singola sottocategoria.
Per l'estrazione delle sottocategorie relative ad una categoria potremo utilizzare una comune query SELECT in associazione alla clausola WHERE che ci permetterà di operare una selezione precisa limitata ai dati che ci interessano.
Se per esempio volessimo estrarre soltanto le sottocategorie relative alla categoria "News", potremmo formulare una query sul modello della seguente:
$sql = 'SELECT sottocategoria FROM `sottocategorie` WHERE `id_cat`="1"';Come ricorderemo da quanto esposto in precedenza, l'Id autoincrementale corrispondente alla categoria chiamata "News" è pari ad "1", quindi la nostra query si spiega in questo modo: "Estrai i valori del campo chiamato sottocategoria dalla tabella 'sottocategorie' dove (WHERE) l'Id della categoria è uguale a "1" (`id_cat`="1").
$sql = 'SELECT `informazione` FROM `contenuti` WHERE `id_cat`="1"';Passiamo all'ultima operazione richiesta, l'estrazione delle informazioni appartenenti alla tabella "contenuti" relative ad una singola sottocategoria. Ogni sottocategoria è dotata di un Id autoincrementale che è unico per ognuna di esse; non sarà quindi necessario indicare nell'interrogazione l'Id della categoria di riferimento, ma solo quello della sottocategoria:
$sql = 'SELECT `informazione` FROM `contenuti` WHERE `id_scat`="2"';La query formulata in esempio ci restituirà il risultato atteso, cioè la stringa "La Juve pareggia in casa del Cagliari." relativa alla sottocategoria "Sport" il cui Id univoco è pari a "2".