Cacolo con query

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Salve,
devo fare un calcolo: prima devo sommare alcuni risultati e poi dividerli per 2, come posso fare?

PHP:
$query = "SELECT SUM(***) as cnt e tutto il resto"; //mi fa la somma dei valori
//qui dovrei passare il risultato della query e dividerlo per due
            $db->setQuery($nuovaquerycondivisione);
            $rows = $db->loadObjectList();

Grazie in anticipo
 

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Funziona se divido per una costante :)
ma se dovessi dividere per il risultato di una query precedente, come posso fare?
es. SELECT SUM(***)/$altraquery as cnt ....
 

marino51

Utente Attivo
28 Feb 2013
3.002
173
63
Lombardia
Funziona se divido per una costante :)
ma se dovessi dividere per il risultato di una query precedente, come posso fare?
es. SELECT SUM(***)/$altraquery as cnt ....
va bene come hai scritto tu, di fatto "$altraquery" è come se fosse una costante, nella posizione in cui si trova,

ma se non ti serve il risultato intermedio che parcheggi in "$altraquery", per altre elaborazioni, puoi unire le due query, esempio
SELECT SUM(***) / ( SELECT count(*) .... ) as cnt
l'importante è che la query "divisore" restituisca un solo valore

ciao
Marino
 
Ultima modifica:

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
E' un codice scritto da terzi che sto cercando di modificare :)
C'è qualcosa che non capisco perché anche se scrivo:

PHP:
	$a= 2;
	$b= 6;
	$query = $a+ $b;
	$db->setQuery($query);
        $rows = $db->loadObjectList();

mi dà errore...
Siccome si tratta di un'espressione che richiede più variabili (sotto forma di query) sarebbe ottimo avere questa struttura
PHP:
$a = query 1
$b = query 2
$c = query 3
$risultato = $a + $b + $c;

Come posso scrivere questa operazione tra query? :(
 

marino51

Utente Attivo
28 Feb 2013
3.002
173
63
Lombardia
le select che si usano per le operazioni devono restituire uno e un solo valore, fatta questa premessa, l'esempio,

PHP:
$query = "
( select count(*) from tabella1 where condizione ) + ( select count(*) from tabella2 where condizione ) + ....
";
ciscuna select dell'esempio restituisce un valore che può essere sommato

in fondo a tutte le select puoi inserire anche un alias " as nome" se vuoi assegnare un nome al valore risultante
(a scanso di equivoci metti tutte le select tra parentesi e poi metti alias)

( (select ....) + (select ....) + ... ) as nome

se hai difficoltà posta la query ed il relativo errore

è necessario anche capire cosa contiene la funzione "loadObjectList"
 
Ultima modifica:

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Esatto, nelle mille prove tra tutte le combinazioni possibili ho fatto anche:

PHP:
$query = "(SELECT SUM(me.count) as cnt,CONCAT(pl.first_name,' ',pl.last_name) as name, t.t_name,t.id as tid ,ev.e_img,ev.e_name,pl.id,pl.def_img FROM #__bl_match_events as me, #__bl_match as m, #__bl_matchday as md, #__bl_players as pl, #__bl_events as ev ,#__bl_teams as t  WHERE  t.id=pl.team_id AND ev.id=me.e_id AND me.e_id = ".$event_id." AND me.match_id = m.id AND m.m_played = 1 AND md.id=m.m_id AND md.s_id=".$s_id." AND me.player_id = pl.id  ".($team_id?' AND t.id='.$team_id:'')." GROUP BY me.player_id ORDER BY cnt desc LIMIT 15) 
/ 
(SELECT SUM(m.m_played) as cnt,CONCAT(pl.first_name,' ',pl.last_name) as name, t.t_name,t.id as tid ,ev.e_img,ev.e_name,pl.id,pl.def_img FROM #__bl_match_events as me, #__bl_match as m, #__bl_matchday as md, #__bl_players as pl, #__bl_events as ev ,#__bl_teams as t  WHERE  t.id=pl.team_id AND ev.id=me.e_id AND me.e_id = ".$event_id." AND me.match_id = m.id AND m.m_played = 1 AND md.id=m.m_id AND md.s_id=".$s_id." AND me.player_id = pl.id  ".($team_id?' AND t.id='.$team_id:'')." GROUP BY me.player_id ORDER BY cnt desc LIMIT 15)";

Si tratta di un'estensione di JoomSport Standard (gratuita). In poche parole la prima query somma dei valori e la divide per la seconda query. Le variabili sono numeri interi; entrambe le select restituiscono un valore poiché provate singolarmente funzionano bene.
 

marino51

Utente Attivo
28 Feb 2013
3.002
173
63
Lombardia
la query che hai postato non potrà mai funzionare,
abbiamo detto che l'operazione aritmetica si può fare su due valori, nel caso specifico dividendo e divisore,
quindi la costruzione della query deve essere
PHP:
SELECT
  SUM(me.count) / ( SELECT SUM(m.m_played) FROM ..... ) as cnt,
  CONCAT(pl.first_name,' ',pl.last_name) as name, 
  t.t_name,
  t.id as tid ,
  ev.e_img,
  ev.e_name,
  pl.id,
  pl.def_img 
FROM
ma potrebbe essere anche
PHP:
SELECT
  ( SUM(me.count) / SUM(m.m_played) ) as cnt,
  CONCAT(pl.first_name,' ',pl.last_name) as name, .....
se ho capito bene la necessità
ma lascio a te il compito di comporre il tutto
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Problemi con il login PHP 2
F Creare elementi html con javascript Javascript 1
R Problema query con ricerca id numerico PHP 2
R [C#] Quali dipendenze occorrono su progetto "Setup" con Access Database? .NET Framework 0
F Problema con risposta PHP 0
A Sottoquery con group by per mese MySQL 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A Quale NVR con ingressi bnc ? IP Cam e Videosorveglianza 1
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 0
T Film interattivo con linguaggi web Programmazione 7
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
Barierta Testo a comparsa con passaggio del mouse Javascript 13
M Estrarre valore con SELECT COUNT PHP 0
G VBA OpenForm con WhereCondition + LIKE su campi differenti MS Access 5
sara3 Offresi articolista con esperienza Offerte e Richieste di Lavoro e/o Collaborazione 2
L Problema RAM con Tomcat 8 Apache 0
S connesso, internet non disponibile ( con extebder tp-link850) Reti LAN e Wireless 0
L Menù con switch case C/C++ 1
Cosina Upload multiplo con invio allegati per email PHP 0
Cosina Upload multiplo con archiviazione in cartella PHP 16
B ciclare file xml con PHP PHP 1
napuleone problema con sort e asort PHP 4
F Group By con Alias condizionale MySQL 1
R [C#] Scrivere un post in grassetto con Selenium su FB Mobile .NET Framework 0
T cms con visualizzazione mind map Content Management System (CMS) 0
D Landing page con Wp Content Management System (CMS) 0
Z problemi con foreach insert into PHP 10
napuleone Con le date il codice da di matto o forse non è così Javascript 6
napuleone Con le date mi da di matto o forse è proprio così jQuery 1
R Aiuto con le query MS Access 2
Z Problema con INT MySQL PHP 1
B javascript per problemi con pdf e Safari Javascript 0
D menu con submenu orizzontale HTML e CSS 0
Z Problema database MySQL con XAMPP PHP 0
D Estrarre database con link esterno Database 10
M Un saluto a tutti con l'auguro di un buon di programmazione Presentati al Forum 0
M Problema con controllo form in real time jQuery 6
gandalf1959 document.getElementsByName con wild character Javascript 6
S impostare un testo e una img nella stessa riga con jsPDF Javascript 0
R Navigare sito con cURL, mi restituisce errore PHP 0
S Rallentamenti con monitor 4k Photoshop 0
Z Video protetto con PHP PHP 0
L File CSV con app inventor da errore Sviluppo app per Android 1
M Problemi con creazione maschere Presentati al Forum 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
R Invio mail con allegati multipli PHP 0
M Tabella con riga più lunga HTML e CSS 6
A Mail con funzione mail() riconosciute come spam PHP 9

Discussioni simili