Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   problema con la consulta select count() (https://www.clubdelphi.com/foros/showthread.php?t=39899)

enecumene 01-02-2007 18:00:06

problema con la consulta select count()
 
holas amigos del foro!!

tratare de explicar de la mejor forma y sencilla posible..trabajo con mysql.

tengo una tabla:

---------------------------------------------------
no_ped << cliente << fecha_rec_ped << status
---------------------------------------------------
0101 << fernando << 2007-01-01 << pagado
0102 << juan << 2007-01-05 << en espera
0103 << maria << 2007-01-10 << pagado
0104 << juana << 2007-01-15 << en espera
0105 << miguel << 2007-01-21 << cancelado
0106 << jose << 2007-01-24 << pagado

pues he aqui el problema, lo que quiero es que me haga una consulta que sume la cantidad de status iguales, por ejemplo:

-----------------
status << total
-----------------
cancelado << 1
en espera << 2
pagado << 3

esta es la consulta que tengo y que no me funciona he intentado varias formas y no he podido dar con ella:


Código SQL [-]
select count(status) from reg_pedidos where fecha_rec_ped>= '$año-$mes-01' and fecha_rec_ped<= '$año-$mes-31' group by status


o esta

Código SQL [-]
select count(*) from reg_pedidos where fecha_rec_ped>= '$año-$mes-01' and fecha_rec_ped<= '$año-$mes-31' group by status order by status




este es el codigo html donde se muestra el resultado:

Código PHP:

mysql_select_db("pedido");
$_pagi_sql ="select count(status) from reg_pedidos where fecha_rec_ped>= '$año-$mes-01' and fecha_rec_ped<= '$año-$mes-31' group by status";
$_pagi_result=mysql_query($_pagi_sql);
$num_resultados mysql_num_rows($_pagi_result);
echo 
'<table width="691" border="0" cellpadding="0">';
echo 
'<tr bgcolor="#000000">';
echo 
'<th width="496" scope="col"><span class="style16">Status</span></th>';
echo 
'<th width="93" scope="col"><span class="style16">Total</span></th>';
echo 
'<th width="94" scope="col"><span class="style16">%</span></th>';
echo 
'</tr>';
echo 
'</table>';
while(
$row=mysql_fetch_array($_pagi_result))
{
echo 
'<table width="691" border="0" cellpadding="0">'
echo 
'<tr>';
echo 
'<th width="496" scope="col"><span class="style15">';
echo 
stripslashes($row["status"]);
echo 
'</span></th>';
echo 
'<th width="93" scope="col"><span class="style15">';
echo 
stripslashes($row["count"]);
echo 
'</span></th>';
echo 
'<th width="94" scope="col"><span class="style15"></span></th>';
echo 
'</tr>';
}
echo 
'</table>'

espero que puedan entender lo que trato de explicar.

fdelamo 01-02-2007 18:37:41

¿no te faltaría el campo status dentro del select?

enecumene 01-02-2007 18:47:15

EL CAMPO STATUS ESTA INCLUIDO EN EL SELECT:

Código SQL [-]
select count(status) from reg_pedidos where fecha_rec_ped>= '$año-$mes-01' and fecha_rec_ped<= '$año-$mes-31' group by status

fdelamo 01-02-2007 18:55:25

A lo que me refiero es
Código SQL [-]
select status, count(status) from reg_pedidos ... group by status
en mySql no se, pero en Firebird (que es el que yo uso), la select no me devuelve el status si no se pone

enecumene 01-02-2007 19:02:31

efectivamente eso era lo que faltaba, muchas gracias pero ocurre otro problema como muestro las cantidades? solamente me muestra los status pero no la cantidad que hay cada uno...

Código SQL [-]
 
select status, count(status) from reg_pedidos where fecha_rec_ped>= '$año-$mes-01' and fecha_rec_ped<= '$año-$mes-31' group by status

enecumene 01-02-2007 23:33:24

bueno ya yo resolvi:
Código PHP:

mysql_select_db("pedido"); 
$_pagi_sql ="select status, count(status) as count from reg_pedidos where fecha_rec_ped>= '$año-$mes-01' and fecha_rec_ped<= '$año-$mes-31' group by status order by status"
$_pagi_result=mysql_query($_pagi_sql); 
$num_resultados mysql_num_rows($_pagi_result); 
echo 
'<table width="691" border="0" cellpadding="0">'
echo 
'<tr bgcolor="#000000">'
echo 
'<th width="496" scope="col"><span class="style16">Status</span></th>'
echo 
'<th width="93" scope="col"><span class="style16">Total</span></th>'
echo 
'<th width="94" scope="col"><span class="style16">%</span></th>'
echo 
'</tr>'
echo 
'</table>'
while(
$row=mysql_fetch_array($_pagi_result)) 

echo 
'<table width="691" border="0" cellpadding="0">';  
echo 
'<tr>'
echo 
'<th width="496" scope="col"><span class="style15">'
echo 
stripslashes($row["status"]); 
echo 
'</span></th>'
echo 
'<th width="93" scope="col"><span class="style15">'
echo 
stripslashes($row["count"]); 
echo 
'</span></th>'
echo 
'<th width="94" scope="col"><span class="style15"></span></th>'
echo 
'</tr>'

echo 
'</table>'

la consulta la puse de esta manera:

Código SQL [-]
select status, count(status) as count from reg_pedidos where fecha_rec_ped>= '$año-$mes-01' and fecha_rec_ped<= '$año-$mes-31' group by status order by status

gracias a fdelamo por la ayuda prestada te lo agradezco.


La franja horaria es GMT +2. Ahora son las 01:09:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi