problema con query complessa

  • Creatore Discussione Creatore Discussione kelmer
  • Data di inizio Data di inizio

kelmer

Nuovo Utente
16 Nov 2010
4
0
0
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
 
Penso che si possa anche fare con il semplice SQL, ma secondo me non ne vale la pena. Sprecheresti molto meno tempo facendo la cosa direttamente con il linguaggio che hai usato per creare il tuo CMS (che immagino sia PHP). Se mi mostri la pagina di ricerca, o di scelta dei prodotti, ci posso dare un'occhiata.
 
Penso che si possa anche fare con il semplice SQL, ma secondo me non ne vale la pena. Sprecheresti molto meno tempo facendo la cosa direttamente con il linguaggio che hai usato per creare il tuo CMS (che immagino sia PHP). Se mi mostri la pagina di ricerca, o di scelta dei prodotti, ci posso dare un'occhiata.

io uso soltanto mysql. niente php., devo generare da questa query una sorta di menù per pazienti ospedalieri..
 
Solamente con MySQL non è possibile generare un menù. Devi per forza appoggiarti a qualche linguaggio di scripting (ASP o PHP) che recuperi i dati ed in seguito generi il codice HTML adeguato, sempre che la tua sia una web application. Comunque anche se non lo fosse ci sarebbe bisogno di un linguaggio, come Java, che visualizzi le informazioni.
 
Solamente con MySQL non è possibile generare un menù. Devi per forza appoggiarti a qualche linguaggio di scripting (ASP o PHP) che recuperi i dati ed in seguito generi il codice HTML adeguato, sempre che la tua sia una web application. Comunque anche se non lo fosse ci sarebbe bisogno di un linguaggio, come Java, che visualizzi le informazioni.

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;
 

Discussioni simili