- Home
- Categorie
- Coding e Sistemistica
- PHP
- aiuto con query complessa
-
aiuto con query complessa
salve a tutti. ho questa tabella :
PRODOTTO_ALIMENTARE
(Nome
,Ditta_produttrice
,Valore_energetico
,Carboidrati
,Grassi
,Proteine
,Costo
,Indicazione
,tipologia
) VALUES (....)dove nella colonna indicazione c'è una scelta tra alcuni valori, come celiachia, diabete1, diabete2, allergiaLatte, ecc..
mentre nella colonna tipologia la scelta avviene tra primo secondo,bevanda, pane, dessert
ho diversi prodotti alimentari inseriti e speravo di poter fare una query che mi dia come risultato una combinazione,o più combinazioni, di cinque prodotti alimentari ( e nello specifico un primo, un secondo una bevanda,un dessert e un pane) dove la somma di questi elementi non superi un certo valore di costo.
queste combinazioni poi devono appartenere tutte alla stessa indicazione, ossia per i celiaci devo avere combinazioni solo tra i prodotti la cui indicazione sia celiachia, ecc.
è possibile farla, oppure mi sto cimentando in qualcosa di troppo complesso?posto alcuni esempi per esser più facile lavorare:
VALUES ('penne rigate','Le veneziane','345','78','0.71','7.7','1.15','celiachia','primo');
VALUES ('pasta all uovo','SCHAR','384','79','4.2','6.8','1.25','celiachia','primo');
VALUES ('spaghetti','BIOALIMENTA','346','78','1.2','5.7','1.05','celiachia','primo');
VALUES ('cavatelli','Happyfarm','346','78','1.2','5.7','0.95','celiachia','primo');
VALUES ('cavatelli','Nutrifree','350','78.4','1.0','7.0','0.90','celiachia','primo');
VALUES ('pane','SCHAR','218','43.1','3.5','3.5','0.35','celiachia','pane');
VALUES ('tortellini','Glutenout','299','49','6.74','10.3','1.20','celiachia','primo');grazie a tutti in anticipo per l'aiuto
-
dopo alcune ore sono riuscito a risolvere il problema, creando combinazioni di cinque prodotti alimentari sempre diversi, suddivisi per categoria e con la condizione di non superare un determinato costo. posto il risultato per i posteri. ciao e grazie a tutti.
Codice:```
SELECT tb1.Nome AS Primo, tb2.Nome AS Secondo, tb3.Nome AS Dessert, tb4.Nome AS Bevanda, tb5.Nome AS Pane ,(tb1.valore+tb2.valore+tb3.valore+tb4.valore+ tb5.valore) AS Codice_menu, (tb1.Costo+tb2.Costo+tb3.Costo+tb4.Costo+tb5.Costo) AS Costo_totale FROM PRODOTTO_ALIMENTARE AS tb1, PRODOTTO_ALIMENTARE AS tb2, PRODOTTO_ALIMENTARE AS tb3, PRODOTTO_ALIMENTARE AS tb4, PRODOTTO_ALIMENTARE AS tb5 WHERE tb1.Nome <> tb2.Nome AND tb1.Nome <> tb3.Nome AND tb1.Nome <> tb4.Nome AND tb1.Nome <> tb5.Nome AND tb2.Nome <> tb3.Nome AND tb2.Nome <> tb4.Nome AND tb2.Nome <> tb5.Nome AND tb3.Nome <> tb4.Nome AND tb3.Nome <> tb5.Nome AND tb4.Nome <> tb5.Nome AND tb1.Tipologia="primo" AND tb2.Tipologia="secondo" AND tb3.Tipologia="dessert" AND tb4.Tipologia="bevanda" AND tb5.Tipologia="Pane" AND tb1.Indicazione="celiachia" AND tb2.Indicazione="celiachia" AND tb3.Indicazione="celiachia" AND tb4.Indicazione="celiachia" AND tb5.Indicazione="celiachia" GROUP BY Codice_menu HAVING Costo_totale<=4.50 ORDER BY Costo_totale DESC;