Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: RedZer en 9 Diciembre 2010, 05:33 am



Título: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 05:33 am
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

Código
  1. conectar();
  2. $jcalendar=mysql_query("select * FROM jqcalendar  WHERE StartTime   BETWEEN '$ini' AND '$fin' AND asistencia='1' GROUP BY Subject ");
  3. desconectar();
  4.  
  5. if (mysql_num_rows($jcalendar)>0)
  6. {
  7. while ($rowj=mysql_fetch_array($jcalendar))
  8. {
  9.  
  10. //separo la ficha que se extrae de la tabla jcalendar
  11.   $ficha=$rowj[1];
  12.   $partes=explode('-',$ficha);
  13.   $aa=$partes[0];
  14.   $bb=$partes[1];
  15.  
  16.  
  17. conectar();
  18. $reporte=mysql_query("select  diags_clave, count(diags_clave)as cuenta  FROM reporte  WHERE ficha='$aa'  and codigo='$bb'  GROUP BY diags_clave ");
  19. desconectar();
  20.  
  21. while ($row=mysql_fetch_array($reporte))
  22. {
  23.  
  24.  
  25. echo $row['cuenta']."<br>";
  26. }
  27.  
  28. }//cierro el segundo while
  29.  
  30.  
  31. }//cierro el if  
  32.  
  33.  

llevo dias desarrollando este sistema quiza sea un error minimo pero ya estoy estresado me podrian decir que estoy asiendo mal porfavor


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 18:42 pm
ya le intente y no le encuentro mi error :-(


Título: Re: Donde esta mi error =(
Publicado por: Shell Root en 9 Diciembre 2010, 19:49 pm
No se, pero creo que es algo como lo siguiente,

Código
  1. CREATE TABLE tblPoC( ID INT NOT NULL AUTO_INCREMENT, COD VARCHAR(10), DESCR VARCHAR(20), PRIMARY KEY (ID) );
  2.  
  3. INSERT INTO tblPoC(COD, DESCR) VALUES('A001', 'PoC1-A001');
  4. INSERT INTO tblPoC(COD, DESCR) VALUES('A001', 'PoC2-A001');
  5. INSERT INTO tblPoC(COD, DESCR) VALUES('A002', 'PoC1-A002');
  6. INSERT INTO tblPoC(COD, DESCR) VALUES('A002', 'PoC2-A002');
  7. INSERT INTO tblPoC(COD, DESCR) VALUES('A002', 'PoC3-A002');

Al realizar la siguiente consulta, el resultado es:
Código
  1. mysql> SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC GROUP BY COD;
  2. +---------+----------+
  3. | Código | Cantidad |
  4. +---------+----------+
  5. | A001    |        2 |
  6. | A002    |        3 |
  7. +---------+----------+
  8. 2 ROWS IN SET (0.00 sec)
  9.  
  10. mysql> SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC WHERE (COD = 'A001') GROUP BY COD;
  11. +---------+----------+
  12. | Código | Cantidad |
  13. +---------+----------+
  14. | A001    |        2 |
  15. +---------+----------+
  16. 1 ROW IN SET (0.00 sec)
  17.  
  18. mysql>


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 20:32 pm
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


Título: Re: Donde esta mi error =(
Publicado por: Shell Root en 9 Diciembre 2010, 20:35 pm
Pero viste lo que hace la query que te deje?


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 20:38 pm
si lo cheque brother pero es igual acomo yo lo tengo en la segunda consulta


Título: Re: Donde esta mi error =(
Publicado por: Shell Root en 9 Diciembre 2010, 21:03 pm
No se cual es tú problema, porque mira el PoC que hice:

Código
  1.  $sHandle = mysql_connect( "127.0.01", "root", "root" );
  2.  mysql_select_db( "dbPoC", $sHandle );
  3.  
  4.  $sSQL = "SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC GROUP BY COD;";
  5.  $sQuery = mysql_query( $sSQL, $sHandle ) or die( "Error: " . mysql_error() );
  6.  
  7.  while( $sRows = mysql_fetch_array($sQuery) ){
  8.    echo "El código ". $sRows['Código'] ." tiene ". $sRows['Cantidad'] ." repeticiones.<br>";
  9.  }

Resultado,
Código
  1. El código A001 tiene 2 repeticiones.
  2. El código A002 tiene 3 repeticiones.


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 21:19 pm
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


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 21:45 pm
mira lo adapte alo que yo quiero hacer

Código
  1.  
  2. <?php  
  3.  
  4.  $sHandle = mysql_connect( "127.0.01", "root", "" );
  5.  mysql_select_db( "regfis", $sHandle );
  6.  
  7. //en mi tabla jcalendar tengo 2 campos los cuales son StartTime  y folio entonnces primero genero esta consulta para
  8. //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
  9. $sSQL = "select * FROM jqcalendar  WHERE StartTime   BETWEEN '2010-12-01' AND '2010-12-06'  GROUP BY Subject";
  10. $sQuery = mysql_query( $sSQL, $sHandle ) or die( "Error: " . mysql_error() );
  11.  
  12.  
  13.  while( $sRows1= mysql_fetch_array($sQuery) ){
  14.  
  15.  
  16.  
  17.  
  18.  $sSQL = "SELECT COD AS 'Código', COUNT(COD) AS 'Cantidad' FROM tblPoC where folio='$sRows1[1]' GROUP BY COD;";
  19.  $sQuery = mysql_query( $sSQL, $sHandle ) or die( "Error: " . mysql_error() );
  20.  
  21.  while( $sRows = mysql_fetch_array($sQuery) ){
  22.    echo "El código ". $sRows['Código'] ." tiene ". $sRows['Cantidad'] ." repeticiones.<br>";
  23.  }
  24.  
  25.   }//cierrro el whuile de la tabla jcalendar
  26.  
  27.  ?>
  28.  
  29.  

con esto solo me imprime que tengo un A001en tu tabla tblPoC  siendo que tengo mas


Título: Re: Donde esta mi error =(
Publicado por: Shell Root en 9 Diciembre 2010, 21:48 pm
A ver, muestrame la salida de la segunda query,
Código
  1. 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.


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 21:58 pm
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



Título: Re: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 22:07 pm
mira tu tabla que creaste quedo asi solño le agregue un campo de mas el cual es folio
Código
  1. ID   COD       DESCR       folio  
  2. 1    A001    PoC1-A001   148100-0
  3. 2    A001    PoC2-A001   298852-0
  4.  
  5.  
claro le quite los demas registros que habias insertado solo lo deje con dos
y mi tabla jcalendar tiene  la siguiente estrutura

Código
  1. Subject          StartTime  
  2. 148100-0     2010-12-01
  3. 298852-0     2010-12-06
  4.  
  5.  
  6.  
en donde subjet venmdria siendo el folio en tu tabla


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 9 Diciembre 2010, 22:08 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
Código
  1. ID   COD       DESCR       folio  
  2. 1    A001    PoC1-A001   148100-0
  3. 2    A001    PoC2-A001   298852-0
  4.  
  5.  
claro le quite los demas registros que habias insertado solo lo deje con dos
y mi tabla jcalendar tiene  la siguiente estrutura

Código
  1. Subject          StartTime  
  2. 148100-0     2010-12-01
  3. 298852-0     2010-12-06
  4.  
  5.  
  6.  
en donde subjet venmdria siendo el folio en tu tabla


Título: Re: Donde esta mi error =(
Publicado por: Shell Root en 10 Diciembre 2010, 00:09 am
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í...
Código
  1. [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.


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 10 Diciembre 2010, 00:25 am
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


Título: Re: Donde esta mi error =(
Publicado por: Shell Root en 10 Diciembre 2010, 00:30 am
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.


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 10 Diciembre 2010, 03:57 am
jajaja disculpame mi amigo es que ando estresado de q


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 10 Diciembre 2010, 04:04 am
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
Código
  1. SELECT T2.diags_clave, COUNT(*)  Total
  2.      FROM jqcalendar  T1 INNER JOIN reporte T2 ON  
  3.  T2.ficha=T1.Subject
  4.      WHERE (T1.StartTime BETWEEN '$ini' AND '$fin')
  5.      GROUP BY T2.diags_clave
  6.  
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
Código
  1. T2.ficha=T1.Subject
  2.  
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?


Título: Re: Donde esta mi error =(
Publicado por: Shell Root en 10 Diciembre 2010, 05:16 am
Podrías hacer algo como,
:http://sql.1keydata.com/es/sql-substring.php


Título: Re: Donde esta mi error =(
Publicado por: RedZer en 10 Diciembre 2010, 05:21 am
gracias mi amigo lo resolvi de esta forma

Código
  1. SELECT T2.diags_clave, COUNT(*)  Total
  2.      FROM jqcalendar  T1 INNER JOIN reporte T2 ON  
  3.  SUBSTRING_INDEX(T1.Subject,'-',-1)=T2.codigo AND
  4.   SUBSTRING_INDEX(T1.Subject,'-',1)=T2.ficha   AND
  5.   T1.asistencia='1'
  6.      WHERE (T1.StartTime BETWEEN '$ini' AND '$fin')
  7.      GROUP BY T2.ficha
  8.  
  9.