Foros del Web » Programando para Internet » PHP »

Como resalizar esta subconsulta (Solucionado)

Estas en el tema de Como resalizar esta subconsulta (Solucionado) en el foro de PHP en Foros del Web. Muy buenos días Foreros, felices fiestas!! espero me puedan ayudar con lo siguiente: necesito realizar una doble consulta a una misma tabla, he escrito el ...
  #1 (permalink)  
Antiguo 30/12/2009, 10:11
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años, 6 meses
Puntos: 8
Pregunta Como resalizar esta subconsulta (Solucionado)

Muy buenos días Foreros, felices fiestas!!

espero me puedan ayudar con lo siguiente:
necesito realizar una doble consulta a una misma tabla, he escrito el siguiente código que funciona muy bien:

Código PHP:
Ver original
  1. $sql = mysql_query("SELECT DATE_FORMAT(fecha, '%Y-%m-%d') as day_unique FROM tabla GROUP BY day_unique");
  2.  while ($row = mysql_fetch_array($sql)) {
  3.      $sql_1 = mysql_query("SELECT COUNT(fecha) as total FROM tabla WHERE DATE_FORMAT(fecha, '%Y-%m-%d')='".$row['day_unique']."'");
  4.         if ($row_1 = mysql_fetch_array($sql_1)) {
  5.          echo $row['day_unique']." = ".$row_1['total']."<br />\n";
  6.         }
  7.      mysql_free_result($sql_1);
  8.  }

lo que hace es agrupar los registros por días y mostrar cuantos registros entraron ese día en particular.

pero tengo la siguiente duda: ¿esta es la mejor forma de hacer este tipo de consultas? o es preferible manejarla con UNION o JOIN

es decir, algo así:

Código PHP:
Ver original
  1. $sql = mysql_query("(SELECT DATE_FORMAT(fecha, '%Y-%m-%d') as day_unique FROM tabla GROUP BY day_unique) UNION (SELECT COUNT(fecha) as total FROM tabla WHERE DATE_FORMAT(fecha, '%Y-%m-%d')='day_unique')");
  2.  while ($row = mysql_fetch_array($sql)) {
  3.      echo $row['day_unique']." = ".$row['total']."<br />\n";
  4.  }

Obviamente esté código no funciona (Aunque se agradecen aportes para que funcione) pero es un ejemplo de como sería.

Muchas Gracias por su atención.
__________________
AppLab - Laboratorio de Ideas

Última edición por abigor66; 30/12/2009 a las 10:23
  #2 (permalink)  
Antiguo 30/12/2009, 10:16
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 8 meses
Puntos: 77
Respuesta: Como resalizar esta subconsulta

Se puede hacer en una sola y simple consulta select, seleccionas la fecha y el count de campo x, agrupas por fecha y ya (?)
  #3 (permalink)  
Antiguo 30/12/2009, 10:17
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años, 6 meses
Puntos: 8
Respuesta: Como resalizar esta subconsulta

te agradecería un ejemplo, pues estoy bloquedo :P jajaja

el problema lo tengo es en generar el numero de registro por día agrupado. Actualmente el resultado es el siguiente:

2009-12-26 = 16
2009-12-27 = 10
2009-12-28 = 3

es decir, que con una sola consulta no logro sacar el 16, 10 ni el tres.

EDIT: ya me desbloquee jajajaja Gracias
__________________
AppLab - Laboratorio de Ideas

Última edición por abigor66; 30/12/2009 a las 10:23
  #4 (permalink)  
Antiguo 30/12/2009, 10:27
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 7 meses
Puntos: 7
Respuesta: Como resalizar esta subconsulta (Solucionado)

pero falta el select para los que no saben DX
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #5 (permalink)  
Antiguo 30/12/2009, 10:38
 
Fecha de Ingreso: mayo-2008
Mensajes: 489
Antigüedad: 16 años, 6 meses
Puntos: 8
Respuesta: Como resalizar esta subconsulta (Solucionado)

publico la soluión por si alguien está en las mismas:

Código PHP:
Ver original
  1. $sql = mysql_query("SELECT DATE_FORMAT(fecha, '%Y-%m-%d') AS day_unique, COUNT(fecha) AS total FROM tabla GROUP BY day_unique");
  2.  while ($row = mysql_fetch_array($sql)) {
  3.      echo $row['total']." = ".$row['day_unique']."<br />\n";
  4.  }
__________________
AppLab - Laboratorio de Ideas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:49.