• User Newbie

    Eseguire query con join e count

    Dovrei eseguire una query su tabelle che sono in relazione contando il numero di righe, ma non so come fare allora provo a fare un esempio di come è strutturato il database e cosa vorrei cercare.
    Supponiamo di avere tre tabelle, una per i piatti che chiamo "piatti", una per gli ingredienti che chiamo "ingredienti" ed una che mette in relazione le due tabelle che chiamo "piatti_ingredienti".

    Per esempio, "piatti" ha i campi "id" e "piatto":
    id = 1, piatto = spaghetti al pomodoro
    id = 2, piatto = insalata
    id = 3, piatto = crostata

    Poi ho la tabella "ingredienti" che ha i campi "id" e "ingrediente":
    id = 1, ingrediente = spaghetti
    id = 2, ingrediente = pelati
    id = 3, ingrediente = lattuga
    id = 4, ingrediente = aceto
    id = 5, ingrediente = olio
    id = 6, ingrediente = pasta
    id = 7, ingrediente = marmellata

    Infine la tabella "piatti_ingredienti" mette in relazione le due precedenti, per cui sarà qualcosa tipo:
    id_piatti = 1, id_ingredienti = 1
    id_piatti = 1, id_ingredienti = 2
    id_piatti = 2, id_ingredienti = 3
    id_piatti = 2, id_ingredienti = 4
    id_piatti = 2, id_ingredienti = 5
    id_piatti = 3, id_ingredienti = 6
    id_piatti = 3, id_ingredienti = 7

    A questo punto io vorrei selezionare i piatti che hanno almeno tre ingredienti; come faccio?


  • User Newbie

    Ho risolto, con una query simile:

    SELECT p.* FROM piatti p
    WHERE (SELECT COUNT(i.*) FROM ingredienti i WHERE i.id_piatti = p.id) >= 3