Mysql
 sql >> Database >  >> RDS >> Mysql

Non riesco a capire come ottenere i dati da MySql Query

Hai alcuni problemi:

  1. Gli indici a $row devono essere racchiusi tra virgolette es. $row['name'] altrimenti riceverai molti avvisi di "costanti non definite";
  2. $row['Jan'] è il modo corretto per recuperare i dati mensili, è necessario replicarli per ciascuno degli altri mesi;
  3. sostituisci $avgGrade con $row['AVG']
  4. Non sono sicuro di cosa stai cercando di ottenere con
<td class = "gScore-<?php echo $row[Jan]; ?>"></td>

vuoi davvero

<td class = "gScore"><?php echo $row[Jan]; ?></td>
  1. devi aggiungere il -- repeat for May to November righe alla query, ad es.
    $result = $db->query("SELECT name,
       COALESCE(AVG(CASE WHEN mth = 1 THEN PTS END), 0) AS Jan,
       COALESCE(AVG(CASE WHEN mth = 2 THEN PTS END), 0) AS Feb,
       COALESCE(AVG(CASE WHEN mth = 3 THEN PTS END), 0) AS Mar,
       COALESCE(AVG(CASE WHEN mth = 4 THEN PTS END), 0) AS Apr,
       COALESCE(AVG(CASE WHEN mth = 5 THEN PTS END), 0) AS May,
       COALESCE(AVG(CASE WHEN mth = 6 THEN PTS END), 0) AS Jun,
       COALESCE(AVG(CASE WHEN mth = 7 THEN PTS END), 0) AS Jul,
       COALESCE(AVG(CASE WHEN mth = 8 THEN PTS END), 0) AS Aug,
       COALESCE(AVG(CASE WHEN mth = 9 THEN PTS END), 0) AS Sep,
       COALESCE(AVG(CASE WHEN mth = 10 THEN PTS END), 0) AS Oct,
       COALESCE(AVG(CASE WHEN mth = 11 THEN PTS END), 0) AS Nov,
       COALESCE(AVG(CASE WHEN mth = 12 THEN PTS END), 0) AS `Dec`,
       AVG(PTS) AS AVG
   FROM (
   SELECT name, PTS AS PTS, MONTH(STR_TO_DATE(DATE, '%a %b %e %H:%i:%s %Y')) AS mth
   FROM data
    ) d
    GROUP BY name");