• User

    Query difficile

    Salve a tutti, dovrei realizzare una select molto complessa per me e chiedo aiuto a voi per risolverla, io sto impazzendo.

    Ho un portale (tipo paginegialle), l'utente effettua effettua la ricerca di un'azienda secondo vari criteri, uno dei quali è il nome.

    Le tabelle coinvolte sono:

    AZIENDE (id_azienda, nome),
    CATEGORIE(id_categoria, nome_categoria),
    SOTTOCATEGORIE(id_sottocategoria, nome_sottocategoria, id_categoria)

    I risultati della ricerca dovrebbero essere visualizzati per categoria e sottocategoria con il relativo numero di aziende per ogni sottocategoria.
    Faccio un esempio semplice:

    L'utente cerca le aziende il cui nome contenga la parola "STUDIO".

    Ed i risultati sono:

    LIBERI PROFESSIONISTI (categoria)
    AVVOCATI (sottocategoria) 10
    (ci sono 10 avvocati con la parola "studio" nel nome)
    COMMERCIALISTI 30

    COMPUTER E INTERNET
    CENTRI ASSISTENZA 20
    SVILUPPATORI WEB 39

    Dovrei riuscire ad ottenere questo risultato, ma non ci sto riuscendo, qualcuno saprebbe darmi una mano?


  • Super User

    Ciao, prima di tutto penso che nella tua spiegazione manchi un dato di collegamento tra AZIENDE e SOTTOCATEGORIE.

    Per il resto la tua query la devi fare eseguire per ogni CATEGORIA, usi un COUNT() ed un GROUP BY.

    Questa l'ho fatta al volo e potrebbe non essere funzionante, ma potresti usarla come punto di partenza

    select count(a.id_azienda) from aziende a
    join sottocategorie s on a.id_sottocategoria = s.id_sottocategoria
    join categorie c on c.id_categoria = s.id_sottocategoria and id_categoria = X
    where lower(nome) like '%studio%'
    group by id_sottocategorie

    cioa