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