Ciao a tutti, avrei bisogno del vostro aiuto perchè navigo nel nulla e non ho molto tempo.
Sto facendo un market per android (quindi java), ho un db mysql e nel mezzo php.
Il mio problema è questo, nel DB ho una tabella APPLICAZIONI, una tabelle UTENTI e una tabella FEEDBACK (più altre tabelle che ora non ci interessano)
Ogni utente che scarica una applicazione dal market può lasciare un voto, ovvero dare all'app da 1 a 5 stelline. Nella tabella FEEDBACK sic rea quindi un record della serie:
APP_ID = 1, UTENTE_ID = 4, VOTO =4
Quindi dopo che tanti utenti hans caricato e votato l'app avrò:
APP_ID = 1, UTENTE_ID = 4, VOTO =4
APP_ID = 1, UTENTE_ID = 1, VOTO =4
APP_ID = 1, UTENTE_ID = 3, VOTO =1
APP_ID = 1, UTENTE_ID = 2, VOTO =3
Il mio problema è questo: nella tabella APPLICAZIONI ogni applicazione ha un campo VOTO_MEDIO. Quando uno sviluppatore inserisce una nuova app questio campo di default assume valore 0. Ma poi man mano che la gente scarica e vota questo campo dovrebbe avere come valore la media dei voti:
x esempio coi dati sopra dovremmo trovare tutti i feedback con APP_ID =1 sommare i valori dei campi voto (4+4+1+3 = 12) e dividere la somma x il numero di righe (4 in questo caso) e quindi il voto medio sarebbe 3.
Volendo potri calcolarlo al volo ogni volta che richiedo un app, senza enanche avere un campo VOTO_MEDIO, potrei fare una query al db in una pagina php che mi calcola il voto medio, quindi cercare nella tabella feedback quanti reghe ci sn per una certa app sommare i valori dei campi voto e dividere il tutto x il numero di righe, ma sarebbe un lavoro assurdo, perchè il voto medio compare in ogni dove e ogni mezzo secondo avrei decine di interrogazioni complesse x ricalcolare tale valore, i voglio invece avere un campo col valore già dentro e subito utilizzabile.
A me non interessa che il valore del campo VOTO_MEDIO sia aggiornato in tempo reale ogni volta che un nuovo utente aggiunge un feedback (mi sembra esagerato e pesante), vorrei che una volta al giorno il db aggiornasse il valore del campo VOTO_MEDIO di tutte le applicazioni, così lavora sl una volta di notte e di giorno il valore è li pronto. che o facesse mysql non php con delle query...
Il problema è che non ho la minima ide di come farlo in particolare.
Come dico a mysql il valore di questo campo deve essere la media dei valori risultanti da........avete capito....
E come gli dico di aggiornarli una volta al giorno?
Qualcuno mi ha parlato di procedure o meglio di funzioni che si salvan in mysql e poi le uso nella mia tabella, della serie vado cn phpmyadmin e nella tabella APPLICAZIONI dico che il valore del campo VOTO_MEDIO sia calcolato dalla funzione da me creata MY_FUNC.....e cn uno scheduler farglielo fare una volta al di......ma di ste cose non so niente, non so se sia la strada giusta e qualche esemoio mi sarebbe comodo.
Grazie mille e scusate se mi sono dilungato, era per far capire bene cosa devo fare.
CIao
Ultima modifica circa 3 ore fa di sgotenks