Ciao a tutti.
Ho due tabelle così formate:
user_mansioni
id |
user |
id_mansione |
livello |
1 |
rossi |
160 |
3 |
2 |
rossi |
100 |
5 |
3 |
rossi |
50 |
2 |
log_mansioni
id |
user |
id_mansione |
livello_comprato |
1 |
rossi |
160 |
1 |
2 |
rossi |
160 |
1 |
3 |
rossi |
50 |
1 |
Il campo di riferimento tra le due tabelle è id_mansione, così la prima cosa che faccio è raggruppare i risultati comuni partendo dalla tabella log_mansioni.
Codice PHP:
$query = gdrcd_query("SELECT log_mansioni.*, user_mansioni.*, SUM(log_mansioni.livello_comprato) AS totale
FROM log_mansioni
INNER JOIN user_mansioni ON user_mansioni.id_mansione = log_mansioni.id_mansione
WHERE log_mansioni.nome = 'rossi'
GROUP BY log_mansioni.id_mansione;", 'result');
Il codice mi trova tutte le corrispondenze tra le due tabelle MA NON MI CALCOLA IL SUM.
Una volta estrapolate le correlazioni, ho aperto un ciclo while perché dovrei fare un conteggio del campo livello_comprato delle corrispondenze trovare e sottrarle dal campo livello della tabella user_mansioni.
Nel caso specifico, le due corrispondenze sono 160 e 50:
(log_mansioni) 160 = 1+1 = 2 -> (user_mansioni) 3-2 = 1
(log_mansioni) 50 = 1 -> (user_mansioni) 2-1 = 1
Ho provato con:
Codice PHP:
$minus = gdrcd_query(" UPDATE user_mansioni SET livello = livello - ". $query['totale'] ." WHERE nome = 'rossi' AND id_mansione = '". $query['id_mansione'] ."' ");
perché mi restituisce
Fatal error: Cannot use object of type mysqli_result as array