Ciao!
Ho le seguenti tabelle:
Vorrei scrivere un'interrogazione per poter estrarre solo le pizze con determinati ingredienti. Il numero degli ingredienti su cui filtrare le pizze non è conosciuto a priori, e ogni pizza del risultato deve essere composta da tutti gli ingredienti scelti.codice:CREATE TABLE Pizza ( Codice SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, Nome VARCHAR(50) NOT NULL, Prezzo DECIMAL(3,2) NOT NULL, Data DATE NOT NULL, Preferenze SMALLINT UNSIGNED NOT NULL DEFAULT 0 ) ENGINE = InnoDB; CREATE TABLE Ingrediente ( Nome VARCHAR(50) PRIMARY KEY ) ENGINE = InnoDB; CREATE TABLE Composizione ( Pizza SMALLINT UNSIGNED, Ingrediente VARCHAR(50), FOREIGN KEY (Pizza) REFERENCES Pizza(Codice) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Ingrediente) REFERENCES Ingrediente(Nome) ON DELETE CASCADE ON UPDATE CASCADE, PRIMARY KEY (Pizza, Ingrediente) ) ENGINE = InnoDB;
Esempio, se le tabelle avessero delle istanze tali che:
Allora il risultato dell'interrogazione sugli ingredienti Pomodoro e Carciofi sarebbe soltanto la pizza Capricciosa.codice:mysql> SELECT P.Codice, P.Nome, P.Prezzo, P.Data, P.Preferenze, C.Ingrediente FROM Pizza P, Composizione C WHERE P.Codice = C.Pizza; +--------+-------------+--------+------------+------------+------------------+ | Codice | Nome | Prezzo | Data | Preferenze | Ingrediente | +--------+-------------+--------+------------+------------+------------------+ | 1 | Margherita | 4.50 | 2011-12-14 | 0 | Mozzarella | | 1 | Margherita | 4.50 | 2011-12-14 | 0 | Pomodoro | | 2 | Capricciosa | 6.50 | 2011-12-14 | 0 | Carciofi | | 2 | Capricciosa | 6.50 | 2011-12-14 | 0 | Funghi | | 2 | Capricciosa | 6.50 | 2011-12-14 | 0 | Mozzarella | | 2 | Capricciosa | 6.50 | 2011-12-14 | 0 | Pomodoro | | 2 | Capricciosa | 6.50 | 2011-12-14 | 0 | Prosciutto cotto | +--------+-------------+--------+------------+------------+------------------+
Chi mi da qualche spunto per scrivere questa SELECT?
Grazie mille!

Rispondi quotando