Salve, ho realizzato un sistema per poter creare dei Menu/Cataloghi e inserire delle sottocategorie (fino al terzo livello). Un esempio che potremmo fare:

Menu1 > Birre
Menu1 > Pizze > Tradizionali
Menu1 > Pizze > Speciali

Menu2 > ....

le tabelle che abbiamo sono 'cataloghi' e 'cataloghi_categorie'
i campi importanti su 'cataloghi sono: id, titolo
i campi importanti su 'cataloghi_categorie' sono: id, catalogo_id, titolo, parent_id (che può essere 0 se è una sottocategoria diretta o contenere un ID di cataloghi_categorie)

questa query che ho realizzato funziona:

Codice PHP:
SELECT
    c
.titolo as PRINCIPALE,
    
cc2.titolo as SECONDO,
    
cc.titolo as TERZO
    FROM cataloghi c
    JOIN cataloghi_categorie cc
      ON c
.id cc.id_catalogo
    LEFT JOIN cataloghi_categorie cc2
      ON cc
.parent_id cc2.id
    WHERE 
... 
la query funziona bene, l'unica cosa è che se non ho un terzo livello ma solo un secondo livello, anzichè valorizzarmi il campo 'SECONDO', mi valorizza il 'TERZO', lasciando secondo a 'NULL'

Come posso migliorare la mia query, anche in termini di prestazioni?

Altra domanda: se le sottocategorie fossero 'infinite', che query mi conviene utilizzare?

Grazie