miren resulta que quiero agrupar y contar 2 campos que tengan el mismo resultado en este caso mi campo se llama diags_clave ok pero antes de eso yo busco en mi tabla jqcalendar una fecha de inicio y una fecha final que aya digitado el usuario si se encuentra ambas fechas dentro de mi tabla jqcalendar genero otra consulta para contar mi campo diags_clave el problema es que me los cuenta pero no me los agrupa por ejemplo el campo diags_clave tiene 2 valores iguales los cuales son A000 se su pone que me me los deberia de agrupar los que tengan a A000 y mostrar solo un resultado de ellos, pero no me muestra eso su pongamos que en mi tabla tengo agregado 2 A000 pues me muestra los 2 en ves de agruparme los 2 resultados en uno solo yo quiero que haga lo si guiene
A000=2
poero me ase esto
A00=1
A00=1
mi codigo es el siguiente
conectar();
$jcalendar=mysql_query("select * FROM jqcalendar WHERE StartTime BETWEEN '$ini' AND '$fin' AND asistencia='1' GROUP BY Subject ");
desconectar();
if (mysql_num_rows($jcalendar)>0)
{
while ($rowj=mysql_fetch_array($jcalendar))
{
//separo la ficha que se extrae de la tabla jcalendar
$ficha=$rowj[1];
$partes=explode('-',$ficha);
$aa=$partes[0];
$bb=$partes[1];
conectar();
$reporte=mysql_query("select diags_clave, count(diags_clave)as cuenta FROM reporte WHERE ficha='$aa' and codigo='$bb' GROUP BY diags_clave ");
desconectar();
while ($row=mysql_fetch_array($reporte))
{
echo $row['cuenta']."<br>";
}
}//cierro el segundo while
}//cierro el if
llevo dias desarrollando este sistema quiza sea un error minimo pero ya estoy estresado me podrian decir que estoy asiendo mal porfavor
ya le intente y no le encuentro mi error :-(
No se, pero creo que es algo como lo siguiente,
CREATE TABLE tblPoC( ID INT NOT NULL AUTO_INCREMENT, COD VARCHAR(10), DESCR VARCHAR(20), PRIMARY KEY (ID) );
INSERT INTO tblPoC(COD, DESCR) VALUES('A001', 'PoC1-A001');
INSERT INTO tblPoC(COD, DESCR) VALUES('A001', 'PoC2-A001');
INSERT INTO tblPoC(COD, DESCR) VALUES('A002', 'PoC1-A002');
INSERT INTO tblPoC(COD, DESCR) VALUES('A002', 'PoC2-A002');
INSERT INTO tblPoC(COD, DESCR) VALUES('A002', 'PoC3-A002');
Al realizar la siguiente consulta, el resultado es:
mysql> SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC GROUP BY COD;
+---------+----------+
| Código | Cantidad |
+---------+----------+
| A001 | 2 |
| A002 | 3 |
+---------+----------+
2 rows in set (0.00 sec)
mysql> SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC WHERE (COD = 'A001') GROUP BY COD;
+---------+----------+
| Código | Cantidad |
+---------+----------+
| A001 | 2 |
+---------+----------+
1 row in set (0.00 sec)
mysql>
no brother bueno mira en la primera consulta que se hace en la tabla jcalendar yo busco las fechas que ingresa el usuario si existe ago optra consulta del cual toma el numero de control del cliente de la tabla jcalendar para buscar en la segunda consulta y ahi es donde quiero agrupar el A001 por que si me lo muestra pero por ejemplo si en la tabla reporte hay dos pacientes con el mismo codigo osea este A001 pues me muestra los dos asi
A001=1
A001=1
y yo quiero esto
A001=2
que tengo mal en mi bucle
?? o hay otra forma de hacerlo
Pero viste lo que hace la query que te deje?
si lo cheque brother pero es igual acomo yo lo tengo en la segunda consulta
No se cual es tú problema, porque mira el PoC que hice:
$sHandle = mysql_connect( "127.0.01", "root", "root" );
mysql_select_db( "dbPoC", $sHandle );
$sSQL = "SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC GROUP BY COD;";
$sQuery = mysql_query( $sSQL, $sHandle ) or die( "Error: " . mysql_error() );
while( $sRows = mysql_fetch_array($sQuery) ){
echo "El código ". $sRows['Código'] ." tiene ". $sRows['Cantidad'] ." repeticiones.<br>";
}
Resultado,
El código A001 tiene 2 repeticiones.
El código A002 tiene 3 repeticiones.
ok mira deja adaptar el codigo que me pasaste alo que me esta sdaliendo mal ok para que me entiendas aond e esta mi rpoblema
mira lo adapte alo que yo quiero hacer
<?php
$sHandle = mysql_connect( "127.0.01", "root", "" );
mysql_select_db( "regfis", $sHandle );
//en mi tabla jcalendar tengo 2 campos los cuales son StartTime y folio entonnces primero genero esta consulta para
//saber si las fechas que introdujo el usuario existen esta consulta es obligatoria ya que estoy generando un reporte por //rango de fechas si existe las fechas indicadas dentro de mi tabla jcalendar genero otra consulta en este caso tomare el codigo que me pusiste y la misma tabla solo le agregue un campo que se llama folio a tu tabla tblPoC bueno la segunda consulta que genero es para comparar si el folio que esta en mi tabla jcalendar es igual al folio que esta en tu tabla tblPoC si es asi ahi debo de contar cuandos A001 existen
$sSQL = "select * FROM jqcalendar WHERE StartTime BETWEEN '2010-12-01' AND '2010-12-06' GROUP BY Subject";
$sQuery = mysql_query( $sSQL, $sHandle ) or die( "Error: " . mysql_error() );
while( $sRows1= mysql_fetch_array($sQuery) ){
$sSQL = "SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC where folio='$sRows1[1]' GROUP BY COD;";
$sQuery = mysql_query( $sSQL, $sHandle ) or die( "Error: " . mysql_error() );
while( $sRows = mysql_fetch_array($sQuery) ){
echo "El código ". $sRows['Código'] ." tiene ". $sRows['Cantidad'] ." repeticiones.<br>";
}
}//cierrro el whuile de la tabla jcalendar
?>
con esto solo me imprime que tengo un A001en tu tabla tblPoC siendo que tengo mas
A ver, muestrame la salida de la segunda query,
print "SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC where folio='$sRows1[1]' GROUP BY COD;";
Después, ejecutarlo desde la consola de MySQL y también muestrame el resultado.
ok mira lo que me muestra el segundo query es esto
El código A001 tiene 1 repeticiones.
siendo que en la tabla que tu creaste tengo 2 A001
mira tu tabla que creaste quedo asi solño le agregue un campo de mas el cual es folio
ID COD DESCR folio
1 A001 PoC1-A001 148100-0
2 A001 PoC2-A001 298852-0
claro le quite los demas registros que habias insertado solo lo deje con dos
y mi tabla jcalendar tiene la siguiente estrutura
Subject StartTime
148100-0 2010-12-01
298852-0 2010-12-06
en donde subjet venmdria siendo el folio en tu tabla
Cita de: elvil en 9 Diciembre 2010, 22:07 PM
mira tu tabla que creaste quedo asi solo le agregue un campo de mas para adaptarlo alo que quiero hacer el campo que agregue es folio
ID COD DESCR folio
1 A001 PoC1-A001 148100-0
2 A001 PoC2-A001 298852-0
claro le quite los demas registros que habias insertado solo lo deje con dos
y mi tabla jcalendar tiene la siguiente estrutura
Subject StartTime
148100-0 2010-12-01
298852-0 2010-12-06
en donde subjet venmdria siendo el folio en tu tabla
Ahh ok ok, lo que pasa, esque tienes una condición en donde tiene cómo clave de búsqueda FOLIO, más específicamente aquí...
[SNIP] WHERE folio='$sRows1[1]' [SNIP]
Por eso es que te lanza sólo un registro al realizar el conteo de datos. Intenta quitarlo y verás lo que te digo.
si brother condiciono esa parte por que de lo contrario me contaria todo los registros que no esten incluidos en la tbala jcalendar ala hora de buscar por fechas ya le quite lo que me dijiste y si es cierto ahora me aparece esto
El código A001 tiene 2 repeticiones.
pero por ejemplo ahi en la tabla jcalendar estoy buscnado del 2010-12-01 al 2010-12-07 y me muestra los folios que agregue en esas fechas en este caso tengo 2 por eso me aparece que tengo 2 repeticiones por que son las unicas que tnego en la base de datos pero por ejemplo si ahora buscara del 2010-12-01 al 2010-12-02 solo me mostraria un resultado ok por que solo hay un resgitro dado de alta esa fecha que es este 2010-12-01 entonces como quiera me aparecera que tengo 2 registros repetidos siendo que deberia de aparecer 1 repetido ya que en el rango de las fechas solo se econtro 1 registro no se si me entendiste por eso yo condiciono para que el folio que esta en la tabla jcalendar se igual al que esta en tu tabla y si esa condicion se cumple entonces empezar acontar cuantos registros hay
hahahaahaha deberías de hablar más pausadamente, porque no te entendí un coño. XD
A ver, la pregunta del millón de dolares: Ahora esta bien el código?. De ser negativa la respuesta, entonces intenta explicarlo de la forma más simple, con querys y resultados, especificando los resultados actuales y los esperados.
jajaja disculpame mi amigo es que ando estresado de q
disculpame mi amigo esque andaba estresado de que no me sali pero ya me salio mira con la siguiente consulta hace lo que yo quiero
SELECT T2.diags_clave, COUNT(*) Total
FROM jqcalendar T1 INNER JOIN reporte T2 ON
T2.ficha=T1.Subject
WHERE (T1.StartTime BETWEEN '$ini' AND '$fin')
GROUP BY T2.diags_clave
ahora tengo un perooo resulta que el campo que almacena la ficha del paciente en la tabla jcalendar el cual es Subject tiene un formato de esta forma
148100-0
en donde 148100 es la ficha del paciente y despue del "-" es el codigo del paciente o sea 0 en este caso almaceno la ficha y el codigo junto pero en la tabla reporte los almaceno por separado
hay un campo que se llama ficha y otro que se llama codigo mi pregunta es tomando mi consulta en esta parte
T2.ficha=T1.Subject
como puedo separar "-" la ficha del codigo en el campo Subject? para haci validar algo como esto
T2.ficha=T1.Subject and T2.codigo=T1.codigo
seria algo como explode no?
Podrías hacer algo como,
:http://sql.1keydata.com/es/sql-substring.php
gracias mi amigo lo resolvi de esta forma
SELECT T2.diags_clave, COUNT(*) Total
FROM jqcalendar T1 INNER JOIN reporte T2 ON
SUBSTRING_INDEX(T1.Subject,'-',-1)=T2.codigo AND
SUBSTRING_INDEX(T1.Subject,'-',1)=T2.ficha AND
T1.asistencia='1'
WHERE (T1.StartTime BETWEEN '$ini' AND '$fin')
GROUP BY T2.ficha