Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    [SQL] Sum tramite un array

    Buon giorno, vorrei sapere per favore come posso, tramite la query che posto qui di seguito, fare una sum..
    Vi spiego, eseguo prima una select su una tabella per estrapolare dei codici, questi codici, li metto dentro un array, il quale mi servirà,in un secondo momento, come parametro di ricerca per eseguire la SUM su un'altra tabella.....
    codice:
    //prima select per estrapolare i codici
    
    select distinct(tol_Codice_l) from TBDATIGENERALI where tol_Municipio = '19'
    //qui mi estrapola 4 tipi diversi di codice array('1234','5678','9012','3456');
    
    //la seconda select è sbagliata, perchè non sò come sommare i valori del campo cau_Vani
    select SUM(cau_Vani) as Tot_Vani_Cat from TBDATICATASTALI 
    	where 
    	cau_Codice_l = ('1234','5678','9012','3456')
    come posso fare?Grazie mille.....

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Se non ho capito male ti serve una somma di cau_Vani per ogni tipo di cau_Codice_l.

    select SUM(cau_Vani) as Tot_Vani_Cat from TBDATICATASTALI group by cau_Codice_1

    dovrebbe fare le somma del campo cau_Vani per ogni cau_Codice_1

  3. #3
    apparentemente ho risolto cosi:

    codice:
    //estrapolo  ivalori che metto dentro un'array
    select distinct(tol_Codice_l) from TBDATIGENERALI where tol_Municipio = '19'
    
    //qui eseguo la SUM
    select SUM(cau_Vani) as Tot_Vani_Cat from TBDATICATASTALI
    	where 
    		cau_Codice_l IN (3980,1234,5337,3977)
    Domanda, non potrei ottimizzare queste due select in una?
    Forse ho detto una cavolata...

  4. #4
    codice:
    where 
    	cau_Codice_l IN('1234','5678','9012','3456')
    se sono tutti valori numerici puoi togliere le apici.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da ANTAGONIA
    Domanda, non potrei ottimizzare queste due select in una?
    Forse ho detto una cavolata...
    puoi fare una subquery nel where.... se la versione di mysql lo permette

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    con mysql 5
    faresti


    Codice PHP:
    select SUM(cau_Vani) as Tot_Vani_Cat from TBDATICATASTALI 
    where cau_Codice_l in 
    (select distinct(tol_Codice_lfrom TBDATIGENERALI where tol_Municipio '19'
    con mysql 4 non va, ma come dici tu va benissimo

  7. #7
    grazie piero, volevo farti anche un'altra domanda.
    La query qui di seguito, mi estrapolata tot campi per tot codici trovati, quindi, il while che eseguo per estrapolare i valori, non mi permette di avere la somma degli ultimi due campi

    codice:
    SELECT
    	distinct(tol_Codice_l) as codice_L,
    	/*totali per Alloggi Ceduti*/
    	SUM(tol_Alloggi_ceduti) as Alloggi_ceduti,  
    	SUM(tol_Locali_ceduti) as Locali_ceduti,
    	SUM(tol_Cantine_soffitte_cedute) as Cantine_soffitte_cedute,
    	SUM(tol_Posti_auto_ceduti) as Posti_auto_ceduti,
    	/*totali per Alloggi Azienda*/
    	SUM(tol_Alloggi_Azienda) as Alloggi_Azienda,  
    	SUM(tol_Locali_Azienda) as Locali_Azienda,
    	SUM(tol_Cantine_soffitte_Azienda) as Cantine_soffitte_Azienda,
    	SUM(tol_Posti_auto_Azienda) as Posti_auto_Azienda,
    	
    	/*Somma totale degli alloggi ceduti*/
    	SUM(tol_Alloggi_ceduti) + SUM(tol_Locali_ceduti) + SUM(tol_Cantine_soffitte_cedute) + SUM(tol_Posti_auto_ceduti) as totAlloggiCed,
    	/*Somma totale degli alloggi Azienda*/
    	SUM(tol_Alloggi_Azienda) + SUM(tol_Locali_Azienda) + SUM(tol_Cantine_soffitte_Azienda) + SUM(tol_Posti_auto_Azienda) as totAlloggiAzienda
    	
    from TBDATIGENERALI where tol_Municipio = '20' group by codice_L
    da questa query il risultato è 3 record e 11 campi, con riassunti per codice_L tutte le SUM relative, ma, alla fine, vorrei un totale generale per due campi 'totAlloggiCed' e 'totAlloggiAzienda'

    come posso fare?

    Grazie ancora...

  8. #8
    prova ad aggiungere with rollup per vedere se fa al caso tuo. eventualmente dividi le due query... non ho letto tutto (mi manca il tempo in questo momento)....


    group by codice_L WITH ROLLUP

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    diciamo che andrebbe bene, se sapessi gestirla, ma è troppo per me, ti ringrazio..!!
    Più tardi ti faccio un'altra domandina..

    Ti ringrazio sei davvero molto gentile

  10. #10
    sto cercando piano piano di risalire la china, ma la vedo dura..cmq:
    in base ad una prima query, estrapolo una serie di valori, che andranno a comporre un array, in quale mi servirà nella select successiva..
    ho fatto in questo ma come al solito non mi funziona,non capisco come mai non mi vede l'array al difuori del while:
    codice:
    $query = ("SELECT distinct(tol_Codice_l) as codice_L from TBDATIGENERALI where tol_Municipio = '".$txtMunicipio."'") or die ("Non è possibile eseguire la DISTINCT riga 61: " . mysql_error());
    	$query = mysql_query($query);
    	//$rowDist=mysql_fetch_assoc($query);
    	while ($Riga = mysql_fetch_array ($query)){
    	             $txtCodiciL = array($Riga['codice_L']);
    		print_r($txtCodiciL);
    	}
    
    //select successiva:
    
    select SUM(cal_Rendita_totale_U_I_cedute) as Rendita_Tot_Cal_Azienda from TBDATICATASTALI
    	where 
                              //vorrei sostituire questi valori con l'array $txtCodiciL		             //cal_Codice_l IN (3980,1234,5337,3977)
                              cal_Codice_l IN (array($txtCodiciL))
    Come faccio a visualizzare tutti i dati fuori dal while, perchè cosi facendo, mi restituisce un solo dato?

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.