-
Union select
Buonasera,
e scusate l'ignoranza,ho 2 queri su 2 file separati che fanno esattamente quello che dovrebbe fare, ora io volevo unire le select con UNION ma non so perchè non va... un aiutino perfavore?
Codice PHP:
<?php
$query = " SELECT SUM(gol_casa) AS tot FROM scontri WHERE sq_casa='sq1' ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row ['tot'] ;
?>
Codice PHP:
<?php
$query = " SELECT SUM(gol_fuori) AS tot2 FROM scontri WHERE sq_fuori='sq1' ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row ['tot'] ;
?>
Ho provato cosi:
Codice PHP:
<?php
$query = " SELECT SUM(gol_casa) AS tot FROM scontri WHERE sq_casa='sq1' UNION SELECT SUM(gol_fuori)AS tot2 FROM scontri WHERE sq_fuori='sq1' ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row ['tot'] ;
?>
Mi stampa $row ['tot'] correttamente ma $row ['tot'2] invece no....dov'è che sbaglio???
-
Nello stampare $row['tot2'] hai comunque scritto $row['tot']
-
Non capisco se la tua è una domanda, cmq ho provato sia singolarmente che con tutti e 2 ad ogni modo funziona solo la row tot, il tot2 non lo visualizzo nemmeno se lo chiamo da solo sembra NULL ma non lo è
-
Codice PHP:
<?php
$query = " SELECT SUM(gol_casa) AS tot FROM scontri WHERE sq_casa='sq1' UNION SELECT SUM(gol_fuori)AS tot2 FROM scontri WHERE sq_fuori='sq1' ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row ['tot'] ;
?>
Questa è la funzione che usi no? Non vedo in alcun punto di questa funziona un "echo $row ['tot2'];", stesso dicasi di tutte le precedenti che hai postato.
-
Forse l'ho presa un po larga cmq lo script incriminato è questo:
Codice PHP:
<?php
$query = " SELECT SUM(gol_casa) AS tot FROM scontri WHERE sq_casa='sq1' UNION SELECT SUM(gol_fuori)AS tot2 FROM scontri WHERE sq_fuori='sq1' ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row ['tot'] ;
echo $row ['tot2'];
?>
Credevo fosse nella primo post che ho postato evidentemente perso nei vari smanettamenti 'echo $row ['tot2'];'
-
Ah ecco! Mi sono informato meglio sulla funzione UNION, che ammetto di conoscere ma non avere mai usato, e credo che non sia la più adatta per le tue esigenze... e rileggendo bene la questione, stai facendo un UNION fra le stesse tabelle, dato che unisci "scontri" con "scontri"... Proverei così:
Codice PHP:
<?php
$query = " SELECT SUM(gol_casa) AS tot1, SUM(gol_fuori) AS tot2 FROM scontri WHERE sq_casa='sq1' OR sq_fuori='sq1' ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row ['tot'] ;
echo $row ['tot2'] ;
?>
-
Sicuramente non sara' il modo migliore ma faccio quello che posso con le conoscenze che ho, poi un giorno l'aggiornero' magari. Cmq il codice che hai postato tu non va bene, ci avevo gia' provato anch'io, in quel modo le somme sono sbagliate perchè dovrei avere la somma tot1 dove (where)sq_casa=sq1 se metto OR mi calcola anche campi che non dovrebbe.
La condizione dovrebbe essere la prima SOLO per il sum(gol_casa) e la seconda SOLO per il sum(gol_fuori). Non so se sono stato sufficientemente chiaro ma il risultato è che non funziona.
-
Se vuoi metterla giù semplice, lanci due query e tagli la testa al toro, ma volendo evitare la situazione, vediamo di ragionarci un attimo su.
Potresti provare con un SELF-JOIN, fai così:
Codice PHP:
<?php
$query = "SELECT SUM(scontri.gol_casa) AS tot1, SUM(scontri.gol_fuori) AS tot2 FROM scontri JOIN scontri ON scontri.sq_fuori='sq1' WHERE scontri.sq_casa='sq1'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row['tot'] ;
echo $row['tot2'] ;
?>
-
Cosi come l'hai postato te non da alcun risultato. Ma questo on?
-
http://it.wikipedia.org/wiki/Join_%28SQL%29
effettivamente mi sono reso conto di aver scritto una baggianata sopra XD
Confesso di aver finito le idee XD riesco a risolverlo solo usando due query...
-
Usiamo 2 query JOIN lo conosco ma mi crea sempre un sacco di problemi, ma a grandi linee il codice che hai postato te l'ho capito.. non ricordo l' ON per cosa stava. Facciamo uno prova?
-
Non ho letto tutta la discussione ma...
Quando fai la union ti farà due tuple "righe"
Quindi devi chiamare tutte e due le somme con alias 'tot' e per visualizzarle devi passare al record successivo.
-
In che senso che devo passare al record successivo?
-
Select 'uno' as pippo from tabella1
UNION
SELECT 'due' as pippo from Tabella2
Da come risultato
| pippo
-------------
1| uno
2| due
Quindi quando carichi i dati avrai un risultato su DUE righe non due colonne.
-
Prova così:
Codice:
<?php
$query = " SELECT SUM(case when sq_casa='sq1' then gol_casa else 0 end) AS tot_gol_casa,SUM(case when sq_fuori='sq1' then gol_fuori else 0 end) AS tot_gol_fuori FROM scontri WHERE sq_casa ='sq1' or sq_fuori='sq1' ";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo $row ['tot_gol_casa'] ;
echo $row ['tot_gol_fuori'] ;
?>
Ciao
Mik
-
Che spettacolo questa query...:shock:
e funziona alla grande...ma perchè 'else 0 end' ? Per cosa sta esattamente?
Vi ringrazio tutti qunti!
Alla stessa maniera ho provato a fare altro, ma perchè questa funziona perfettamente
Codice PHP:
$query = "SELECT SUM(case when sq_casa='sq2' and segno='1' then segno else 0 end)as vitc,SUM(case when sq_fuori='sq2' and segno='2' then segno else 0 end)as vitf FROM scontri ";
..e invece questa no?
Codice PHP:
$query = "SELECT SUM(case when sq_casa='sq2' and segno='x' then segno else 0 end) as pari_casa,SUM(case when sq_fuori='sq2' and segno='x' then segno else 0 end) as pari_fuori FROM scontri ";
-
Bella lì....
per la tua query
Codice:
$query = "
SELECT
SUM(case when sq_casa='sq2' and segno='x' then segno else 0 end) as pari_casa,
SUM(case when sq_fuori='sq2' and segno='x' then segno else 0 end) as pari_fuori
FROM scontri ";
non va bene perchè negli altri casi, il valore da sommare è numerico, in questo caso "segno" è formato testo ("x")
Nel caso di gol_casa/gol_fuori, il valore è numerico ed inoltre può essere maggiore di 1, quindi la Sum() è la somma dei relativi valori e non un conteggio.
Per la query segno "x" credo vada bene un semplice conteggio. Quindi puoi modificare la query in questo modo:
Codice:
$query = "
SELECT
SUM(case when sq_casa='sq2' and segno='x' then 1 else 0 end) as pari_casa,
SUM(case when sq_fuori='sq2' and segno='x' then 1 else 0 end) as pari_fuori
FROM scontri ";
Ciauee
Mik
-
Ahh quindi dopo 'then' ci va messo il valore che voglio sommare e '0 end' è il valore che do se la condizione nn è rispettata se ho capito bene..cmq nemmeno il codice che hai postato da ultimo per i pareggi funziona!
ERRORE MIO..funziona!!! ma è come ho detto su?