[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Ricetta (per query ma anche per mangiare)



Uhm... Il DB è denormalizzato, e questo rende complicato fare queste query. Anzi, temo che in SQL non si riescano a fare...

Avresti dovuto usare più tabelle, tipo:
- ingredienti [id, nome]
- cene [id, commensali, data]
- ricette [id, ingrediente, cena]
con ingrediente->ingredienti.id e cena->cene.id

In questo modo diventa "facile": per ogni ingrediente fai una sub-query che conti le cene che l'hanno usato.

select ingredienti.nome,
  (select count(*) from ricette
   where ricette.ingrediente = ingredienti.id) as usi
  from ingredienti;

Assumendo che un ingrediente figuri una sola volta per cena.

Diego

Il 15/06/2023 13:48, Leonardo Boselli ha scritto:
Ho un database con colonne ID[integer], Ingredienti[text], commensali[float], data[datetime].

Il campo ingredientoi contiene una lista (tra 1 e 20 valori, separati da spazio) degli ingredienti presenti per oltre il 5% del menu.

Domadona: c'è un modo di estrarre una tabella che mi dia "ingrediente" e "frequenza" ossia ogni ingrediente in quante cene è statao presente ? (ovviamante un group by ingredienti non funziona in quanto un rtecord potrebbe avere «pasta pomodoro fungo maiale mela» un altre «riso fungo prezzemolo maiale» e quindi in uscita dovrei avere maiale:2 fungo:2 pasta:1 pomodoro:1 ...)
C'è un modo diretto restando in una query sql ?
--
Leonardo Boselli
Firenze, Toscana, Europa

--
Diego Zuccato
DIFA - Dip. di Fisica e Astronomia
Servizi Informatici
Alma Mater Studiorum - Università di Bologna
V.le Berti-Pichat 6/2 - 40127 Bologna - Italy
tel.: +39 051 20 95786


Reply to: