Salve a tutti!
Diciamo che ho un database organizzato in questo modo:
Tabella "Ingredienti" (idIngrediente come PK)
Tabella "Ricette" (idRicetta come PK)
Tabella "Ing_Ric" (idIng_Ric, idIngrediente, idRicetta tutte come PK).
Ovviamente, la tabella Ing_Ric mi serve per "bindare" gli ingredienti ad una ricetta (per evitare che all'eliminazione di un ingrediente, vengano eliminate pure le ricette che lo contengono, insomma... per rendere il DB in terza forma normale ed evitare le dangling references).
Se volessi fare una query di tipo SELECT di tutte le ricette che contengono determinati ingredienti, farei così:
SELECT ricette.idRicetta, ricette.nomeRicetta FROM ingredienti, ricette, ing_ric WHERE ingredienti.idIngrediente = ing_ric.idIngrediente AND ricette.idRicetta = ing_ric.idRicetta AND ing_ric.idIngrediente = 1;
Diciamo che 1 sarebbe l'aglio, 2 la cipolla e 3 i peperoni (tanto per fare una cenetta leggera leggera).
Se eseguo la query suddetta, i risultati corrispondono. Se aggiungo altri parametri (diciamo che la clausola WHERE diventa così: ".....AND ing_ric.idIngrediente = 1 AND ing_ric.idIngrediente = 2") non mi tira fuori alcun risultato. Ora, capisco concettualmente che idIngrediente può assumere SOLTANTO un valore, per cui non è mai verificata la condizione in cui idIngrediente è sia uguale a 1 che uguale a 2. Se usassi l'operatore OR, mi tirerebbe fuori tutte le ricette che contengono sia 1 che 2, ma la ricerca così non sarebbe più raffinata ai risultati che mi servono, ma sarebbe molto più "dispersiva", fornendomi tutte le ricette che contengono o l'aglio o la cipolla o entrambi, ma a me serve che escano solo le ricette che contengono SIA l'aglio CHE la cipolla! Non so se mi spiego...
Che query potrei utilizzare?
Grazie a tutti!