Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30

    [MYSQL] Copiare media in una tabella

    Ciao a tutti,
    premetto che sono un novellino in termini di database e sto cercando di realizzare una piccola applicazione ma mi trovo subito in difficoltà. Allora ho due tabelle, una contiene un elenco di oggetti identificati da un campo di nome Numero (di tipo auto_increment) e un altra contiene una serie di valutazioni degli oggetti contenuti nella prima identificate sempre dal campo di nome numero. Ora una volta calcolata la media delle valutazioni per ogni oggetto vorrei inserirla in una colonna presente nella prima tabella di nome Voto in corrispondenza dell'oggetto corretto. Allego un immagine dove si capisce in modo semplice il mio problema.
    tabelle.jpg
    qualcuno è in grado di aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Perché vuoi inserire la media nella tabella?
    Ti conviene calcolarla ogni volta con una query, altrimenti devi aggiornare il campo ogni volta che la tabella delle valutazioni varia

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30
    Vorrei fare così perché avere un array json unico quando prelevo i dati mi risolverebbe un bel pò di problemi.. e la tabella oggetti potrei aggiornarla da php ogni volta che si inserisce un voto nella tabella voti

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ma una query tipo questa (assolutamente non testata, prendila come un esempio)
    SELECT a.*, AVG(b.voto) FROM oggetti a INNER JOIN voti.b on a.id = b.id GROUP BY a.id, b.id
    non ti restituisce comunque i valori da trattare come preferisci (json o no)?

    l'altra la vedo più macchinosa, devi mettere un livello di applicazione per gestire gli update della tabella

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30
    Allora ho modificato un po' quello che mi hai proposto e sono riuscito a farlo funzionare eliminando la colonna voti dalla tabella oggetti, la query che ho usato è questa:
    SELECT oggetti.Numero, Descrizione ,AVG(Voto) FROM oggetti, voti WHERE oggetti.Numero = voti.Numero GROUP BY voti.Numero
    In pratica usando come mi avevi detto un INNER JOIN.
    Ora ho un altro problema, mettiamo il caso che nella tabella valutazioni non ci sia il voto corrispondente all'oggetto numero 15. Vorrei che mi venga eseguito il JOIN anche se non c'è la corrispondenza magari mettendo in quel caso l'AVG(Voto) = 0 oppure non mostrandolo proprio nell'output.
    Devo cambiare tipo di JOIN?

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    left join della tabella oggetti su quella voti

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    30
    Perfetto, funziona alla grande

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.