Somma di due record

macchiavelli.ivan

Utente Attivo
7 Dic 2012
67
0
0
Salve. Ho creato questa query:
Codice:
SELECT maestri.*,lezioni.lez FROM lezioni INNER JOIN maestri ON lezioni.id_ins = maestri.id WHERE maestri.sesso = 'uomo' AND lezioni.anno = '2013' AND lezioni.week = '33' ORDER BY lezioni.lez DESC

Che rilascia questo risultato:
Schermata 2013-08-21 alle 13.04.13.png

Vorrei aggiungere alla query il comando SUM che faccia visualizzare solo la prima riga evidenziata in rosso, e il campo lez sommato con la seconda riga evidenziata in rosso, che dovrebbe non essere visualizzata.
Come potrei fare?
Grazie mille in anticipo.
 
ciao
ho un piccolo dubbio, da quanto vedo non c'è nulla che unisca le due righe, es se i due nomi fossero uguali
potresti (semplifico, ti arrangi tu con la join)
SELECT SUM(lez) as somma WHERE nome ='Marco' GROUP BY nome

puoi provare con

SELECT SUM(lez) as somma WHERE LIKE '%Marco%' GROUP BY nome
(con inizia o contiene o termina, io ho messo contiene)

se la seconda non funzia mi sa che devi farti un po' di script
 
Ciao.
Ho modificato la query:

Codice:
SELECT SUM(lez) as somma, maestri.*,lezioni.lez FROM lezioni INNER JOIN maestri ON lezioni.id_ins = maestri.id WHERE nome ='Marco' AND maestri.sesso = 'uomo' AND lezioni.anno = '2013' AND lezioni.week = '33' GROUP BY 'nome' ORDER BY lezioni.lez DESC

Solo che adesso mi lista il record di "Marco" ma il resto dei record non lo lista più :crying:
 
ciao
avendo messo WHERE nome ='Marco' ti lista solo per il nome Marco
e quindi un unico record, se vuoi la somma per tutti i nomi es
Marco tot lez 30
Piero tot lez 25
ecc...
puoi provare a togliere nome ='Marco'
ma non so se è il metodo giusto
prova e sappimi dire che ci penso meglio
 
hum ok.
Se tolgo WHERE nome ='Marco' non fa la somma di quei due record in vece dovrebbe sommare il campo lez di quei 2 record ma visualizzare la lista completa.
 
ciao
non so se è quello che vuoi fare, ma ho fatto delle prove (semplificate senza join) e la somma funzia.
prima ho riempito la tabella
id int(4) autoincrement primarykey
lez int(3)
nome varchar(50)
casualmente come nomi e numero di lezioni
PHP:
<?php
//---connessione----------------------------------------------------
$nome_ar=array('pinco','pallo','pallino','sempronio','sofonisba','asdrubale', 'befana','attenzio');
for($k=0; $k<21;$k++){
	$n=rand(0,7);
	$nome=$nome_ar[$n];
	$lez=rand(0,10);
	if(mysql_query("INSERT INTO lezioni(lez,nome) VALUES($lez,'$nome')")){
		echo "$lez : $nome<br>";
	}
}
?>
poi l'ho letta con
PHP:
<?php
//---connessione----------------------------------------------------
$q=mysql_query("SELECT SUM(lez) as somma, nome FROM lezioni GROUP BY nome");
while($riga=mysql_fetch_array($q)){
	echo $riga['nome']." tot. lez ".$riga['somma']."<br>";
}
?>
e questo è l'output, che se non ho capito male è quello che vorresti fare
asdrubale tot. lez 2
attenzio tot. lez 19
befana tot. lez 21
pallo tot. lez 15
pinco tot. lez 7
sempronio tot. lez 23
sofonisba tot. lez 19
cioè ti presenta tutti i nomi con la somma delle lezioni totali per un dato nome (anche se il nome appare una sola volta)
 

Discussioni simili