[PHP] Media valori presi da una query

Discussione in 'PHP' iniziata da Tommy03, 30 Giugno 2019.

  1. Tommy03

    Tommy03 Utente Attivo

    Registrato:
    6 Giugno 2018
    Messaggi:
    54
    Mi Piace Ricevuti:
    5
    Punteggio:
    8
    Sesso:
    Maschio
    Salve, ho un database con 2 tabelle:
    richieste (con 2 campi: fromuser (l'utente che ha inviato la richiesta) e touser (l'utente che la riceve))
    recensioni (con 2 campi: fromuser(l'utente che dà il proprio voto) e voto (il numero da 1 a 5 dato dall'utente).
    Ho scritto questo codice:
    PHP:
    $que5=$conn->prepare("SELECT  fromuser FROM richieste WHERE touser='$utente'");
    $que5->execute();
    while(
    $getque5=$que5->fetch(PDO::FETCH_ASSOC)){
    $usidd=$getque5['fromuser'];
    $que6=$conn->prepare("SELECT AVG(voto) AS media FROM recensioni WHERE fromuser='$usidd'");
    $que6->execute();
    $getque6=$que6->fetch(PDO::FETCH_ASSOC);
    $media $getque6['media'];
    echo 
    $usidd;
    echo 
    ': media';
    echo 
    $media;
    echo 
    '<br>';
    }
    In questo modo visualizzo correttamente le medie dei voti di tutte le persone che hanno inviato la richiesta all'utente della sessione, però ora vorrei che anziché visualizzare ad esempio:
    Tizio: media 5
    Caio: media 1
    Si potesse vedere un'altra riga con scritto:
    Media totale (Tizio, Caio): 3
    Come potrei fare?
    Grazie
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    919
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Farei così invece di iterare ed effettuare altre query....
    PHP:
    $query="SELECT  fromuser,
                    (SELECT AVG(voto) AS expr1 FROM recensioni WHERE fromuser=richieste.uid) as media,
     FROM richieste WHERE touser='
    $utente'";
    $que5=$conn->prepare($query);
    $result=$que5->fetchAll();
    $media_Tot=0;
    foreach(
    $result as $items){
    echo 
    $items['usidd'];
    echo 
    ': media';
    echo 
    $items['media'];
    echo 
    '<br>';
        
    $media_Tot+=$items['media'];
    }

    echo 
    'Media Totale : '.$media_Tot;
     
  3. Tommy03

    Tommy03 Utente Attivo

    Registrato:
    6 Giugno 2018
    Messaggi:
    54
    Mi Piace Ricevuti:
    5
    Punteggio:
    8
    Sesso:
    Maschio
    Grazie mille! Però non ho capito una cosa: cosa significa richieste.uid?
     
  4. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    919
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Fai una subselect partendo dai dati della prima select... Ossia
    Per ogni riga utente fai la media dei valori nella seconda tabella...
     
Sto caricando...

Condividi questa Pagina