Somma con ricerca multipla

Somma con ricerca multipla

0
0

Buongiorno a tutti! Non so se il crossposting sia permesso…ma dico subito che ho fatto questa domanda anche in un altro forum dove però bisogna aspettare l’approvazione di un mod per ogni messaggio diventa lungo…non so se sia così anche qui 🙂

Sto creando un DB per la creazione di diete casalinghe e mi sono bloccato su un punto che spero di spiegar bene. Ho un formato “DB Alimenti” associato alla tabella “DB Alimenti” che ha un alimento con tutti i suoi nutrienti per ogni record. Poi ho un altro formato chiamato “Formulazione dieta” associato alla tabella “formulazione dieta” (vedasi allegati). Io vorrei che ogni volta che scelgo l’alimento (nel formato “Formulazione dieta”) di un campo (quindi alimento1, alimento2, ecc.) mi faccia la somma dei nutrienti (proteine o carboidrati o grassi, ecc.) nel campo “Proteine” o “Carboidrati”, ecc del formato “Formulazione dieta”. Ho provato con auto-relazioni ma essendo 2 tabelle diverse non va, ho provato con relazioni di ogni tipo ma non riesco…l’unico modo trovato è fare uno script frigger su convalida campo che mi fa la ricerca dell0alimento appena inserito, mi copia il campo proteine e me lo somma…solo che come vedete sono 12 alimenti x 64 nutrienti e fare quasi 700 script diventerebbe impossibile…ho provato anche con il loop ma non riesco…

Spero di essere stato chiaro e vi ringrazio per l’aiuto!

Segnalato come spam
Pubblicata da (Domande: 3, Risposte: 5)
Domanda inviata 13 Giugno 2016 15:36
36 vis.
0
Domanda privata

con questa soluzione hai più tabelle ma molti molti meno campi, è più semplice da gestire e manutenere e soprattutto puoi aggiungere o togliere alimenti e nutrienti senza dover rientrare nella struttura.
Il problema è che mi sa che ti tocca cambiare parecchio :)

.g.

Segnalata come spam
Pubblicata da (Domande: 0, Risposte: 1544)
Risposta inviata 14 Giugno 2016 12:32
0
Domanda privata

in sintesi:
– tabella alimenti, pochi campi, i nutrienti relativi con i valori vanno nella tabella correllata nutrienti_alimenti (uno per record, inserimento con lista valori proveniente dalla tabella nutrienti)
– tabella diete, pochi campi, alimenti relativi alimenti nella tabella correlata alimenti_dieta, uno per record con script che controlli i nutrienti presenti negli alimenti associati alla dieta e crei il corrispondente record nella tabella nutrienti_dieta (se non esiste già). te la cavi con un paio di liste e un loop. per i totali, sempre nella tabella nutrienti_dieta basta un calcolo che sommi i record nella tabella alimenti_nutrienti che corrispondano alle epscifiche (con eseguiSQL è un rigo di testo, se preferisci non usarlo devi lavorare di relazioni, ma è più complicato). :)

.g.

Segnalata come spam
Pubblicata da (Domande: 0, Risposte: 1544)
Risposta inviata 14 Giugno 2016 12:31
0
Domanda privata

vado per ordine:

1) perché a un alimento corrispondono più nutrienti, quindi conviene tenerli in tabelle separate. pure se li hai già :D
2) si, ma non devi avere più campi (alimento 1, 2, 3, etc) ma mettere gli alimenti nella tabella correlata alimenti_dieta, uno per record.

i totali li devi calcolare nell’altra tabella correlata nutrienti_dieta mediante calcolo. Per creare i record dei nutrienti relativi alla dieta o li crei tutti in fase di creazione dieta via script oppure con un trigger in fase di inserimento alimento.

a presto.

.g.

Segnalata come spam
Pubblicata da (Domande: 0, Risposte: 1544)
Risposta inviata 13 Giugno 2016 16:43
0
Domanda privata

Wow! Sei più veloce di Flash! Grazie per la risposta…

1) Perché separeresti la tabella nutrienti da quella alimenti? Cioè – peccato davvero non si vedano gli allegati!! :'( – ogni record ha il nome dell’alimento con i suoi nutrienti (che son 64)…forse mi sono spiegato male…io tutti gli alimenti con i suoi nutrienti li ho già…non devo inserirli

2) tabella dieta immagino tu intenda dove creo la dieta vera e propria: cioè in ogni campo (chiamati alimento1, alimento2, ecc.) scelgo da una lista valori l’alimento (per esempio ”riso cotto” o ”macinata manzo magra”) e in automatico dovrebbe andarmi a prendere le ”proteine” (in verità ognuno dei 64 campi) dell’alimento correlato nella tabella dove ci sono gli alimenti (DB Alimenti) sommandomela a quelle dell’alimento1, dell’alimento2, ecc…

Per esempio:

Campo Alimento1 – Riso cotto –> 2,36 gr/100 gr

Campo Alimento2 – Tacchino petto crudo –> 24,60 gr/100 gr

Ecc.

Nel campo proteine (sempre dello stesso formato ”Formulazione dieta”) io vorrei comparisse la somma, cioè 26,96

Ti chiedo scusa, magari non riesco a capire bene cosa intendi… :)

Segnalata come spam
Pubblicata da (Domande: 3, Risposte: 5)
Risposta inviata 13 Giugno 2016 16:20
0
Domanda privata

Buongiorno, Andrea.

Ti dico come la imposterei io:

– tabella nutrienti (proteine, carboidrati…) per gestire i nutrienti in tutto il db
– tabella alimenti
– tabella nutrienti_alimenti (correlata con alimenti, in cui inserisci i nutrienti per ciascun alimento tramite portale)
– tabella dieta
– tabella alimenti_dieta (in cui inserisci gli alimenti per ciascuna dieta)
– tabella nutrienti_dieta (in cui vengono inseriti i nutrienti).

ogni volta che inserisci un alimento in una dieta via script controlli se i nutrienti di quell’alimento già esistono, e in caso contrario li crei. Il totale è un semplice calcolo in nutrienti_dieta, ovvero una somma di tutti i record di nutrienti_alimenti che abbiano lo stesso id_nutriente e il cui alimento di riferimento sia associato alla dieta.
In questo modo la tabella nutrienti_alimenti avrà solo cinque campi (chiave primaria, chiave esterna alimenti, chiave esterna nutrienti,descrizione, quantità) e la tabella nutrienti_dieta , sei ( chiave primaria, chiave esterna alimenti, chiave esterna dieta, chiave esterna nutrienti,calcolo descrizione, calcolo quantità). Se modelli bene l’unico script che ti serve davvero è l’abbinamento dieta-alimenti, e tutto il resto lo fa il motore di calcolo.

facci sapere!

.g.

Segnalata come spam
Pubblicata da (Domande: 0, Risposte: 1544)
Risposta inviata 13 Giugno 2016 15:46
0
Domanda privata

Non si vedono gli allegati…mi spiace perché chiarirebbero il problema… :(

Segnalata come spam
Pubblicata da (Domande: 3, Risposte: 5)
Risposta inviata 13 Giugno 2016 15:39