Foros del Web » Programando para Internet » PHP »

Problema con SELECT y GROUP BY

Estas en el tema de Problema con SELECT y GROUP BY en el foro de PHP en Foros del Web. Una pregunta, si quiero hacer un SELECT escogiendo dos campos, tengo obligatoriamente que poner los dos campos en el GROUP BY. A mi no me ...
  #1 (permalink)  
Antiguo 04/03/2008, 15:55
Avatar de Henki  
Fecha de Ingreso: febrero-2008
Mensajes: 74
Antigüedad: 16 años, 2 meses
Puntos: 0
Problema con SELECT y GROUP BY

Una pregunta, si quiero hacer un SELECT escogiendo dos campos, tengo obligatoriamente que poner los dos campos en el GROUP BY. A mi no me interesa hacerlo asi, peri si no lo escojo me da un error.
salu2 y gracias
  #2 (permalink)  
Antiguo 04/03/2008, 15:59
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con SELECT y GROUP BY

NO se entiende bien tu duda. Te refieres a algo como:

Código PHP:
$sql "SELECT campo1, campo2 FROM tabla"
o
Código PHP:
$sql "SELECT * FROM tabla WHERE campo1 = 'algo' AND campo2 = 'otracosa'"
Saludos,
  #3 (permalink)  
Antiguo 05/03/2008, 09:48
Avatar de Henki  
Fecha de Ingreso: febrero-2008
Mensajes: 74
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con SELECT y GROUP BY

Me explicare mejor:
quisiera hacer esto:
SELECT Fecha, COUNT(*) as Total, MañanaTarde FROM Registro GROUP BY Fecha ORDER BY Fecha
Pero me da un error y me dice que si en el SELECT ma aparece MañanaTarde, tambien debe salir en el GROUP BY. Y no me interesa porque entonces la tabla resultante esta separada por Fecha y por MañanaTarde, y solo la quiero separada por Fecha. Si es necesario explico un poco lo que quiero hacer, pero de momento no quiero liaros con una explicacion demasaido pesada si no es necesario
salu2 y gracias
  #4 (permalink)  
Antiguo 05/03/2008, 09:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con SELECT y GROUP BY

Entonces saca el MañanaTarde de tu Query:
Código:
SELECT Fecha, COUNT(*) as Total FROM Registro GROUP BY Fecha ORDER BY Fecha
Saludos.
  #5 (permalink)  
Antiguo 05/03/2008, 12:37
Avatar de Henki  
Fecha de Ingreso: febrero-2008
Mensajes: 74
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con SELECT y GROUP BY

Cita:
Iniciado por GatorV Ver Mensaje
Entonces saca el MañanaTarde de tu Query:
Código:
SELECT Fecha, COUNT(*) as Total FROM Registro GROUP BY Fecha ORDER BY Fecha
Saludos.
Es que luego necesitare usar ese valor para crear un bucle basandome en el. Como podria hacerlo?
salu2
  #6 (permalink)  
Antiguo 05/03/2008, 13:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con SELECT y GROUP BY

Entonces si seleccionalo y agregalo a tu columna de group by.

Saludos.
  #7 (permalink)  
Antiguo 05/03/2008, 14:59
Avatar de Henki  
Fecha de Ingreso: febrero-2008
Mensajes: 74
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con SELECT y GROUP BY

Cita:
Iniciado por GatorV Ver Mensaje
Entonces si seleccionalo y agregalo a tu columna de group by.

Saludos.
pero entonces aqui es donde tengo el problema, que la lista me queda separada por los dos campos que he puesto en el group by, y yo no quiero esto. Imagina que quiero hacer una lista de fechas con por ejemplo los coches que se han reparado, si estuviesemos haciendo una web para un taller. Cada fecha tiene coches reparados por el turno de mañana y por el turno de tarde. Yo quiero hacer una lista por fechas, con dos columnas que me digan el total de coches reparados por cada turno, por eso necesito hacer el select del campo MañanaTarde. Pero si pongo ese campo en el GROUP BY, entonces la lista se me separa por fechas y por turnos; es decir, me sale dos veces cada fecha, una con los numeros hechos por el turno de mañana y otro con los numeros hechos por el grupo de tarde, cosa que no quiero. No se si me explico. Se puede solucionar de algun modo?
salu2 y gracias
  #8 (permalink)  
Antiguo 05/03/2008, 15:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema con SELECT y GROUP BY

Entonces hazlo mas sencillo, primero selecciona el turno de la mañana y luego el de la tarde, asi puedes imprimir dos listas:
Código:
SELECT Fecha, COUNT(*) as Total FROM Registro WHERE MañanaTarde='Mañana' GROUP BY Fecha ORDER BY Fecha
SELECT Fecha, COUNT(*) as Total FROM Registro WHERE MañanaTarde='Tarde' GROUP BY Fecha ORDER BY Fecha
Saludos.
  #9 (permalink)  
Antiguo 06/03/2008, 09:37
Avatar de Henki  
Fecha de Ingreso: febrero-2008
Mensajes: 74
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con SELECT y GROUP BY

Cita:
Iniciado por GatorV Ver Mensaje
Entonces hazlo mas sencillo, primero selecciona el turno de la mañana y luego el de la tarde, asi puedes imprimir dos listas:
Código:
SELECT Fecha, COUNT(*) as Total FROM Registro WHERE MañanaTarde='Mañana' GROUP BY Fecha ORDER BY Fecha
SELECT Fecha, COUNT(*) as Total FROM Registro WHERE MañanaTarde='Tarde' GROUP BY Fecha ORDER BY Fecha
Saludos.
el problema es que luego tengo un bucle while con el que usi una odbc para leer uno de los datos conseguidos de la tabla, y si hicera dos selec necesitaria dos bucles, con lo que se me complicaria mucho la cosa. lo estudiare
salu2 y gracias
  #10 (permalink)  
Antiguo 06/03/2008, 12:50
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con SELECT y GROUP BY

Y si haces tu consulta sin el GROUP BY?

Código PHP:
$sql "SELECT Fecha, COUNT(*) as Total, MañanaTarde FROM Registro ORDER BY Fecha DESC"
Saludos,
  #11 (permalink)  
Antiguo 09/03/2008, 11:05
Avatar de Henki  
Fecha de Ingreso: febrero-2008
Mensajes: 74
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Problema con SELECT y GROUP BY

Cita:
Iniciado por okram Ver Mensaje
Y si haces tu consulta sin el GROUP BY?

Código PHP:
$sql "SELECT Fecha, COUNT(*) as Total, MañanaTarde FROM Registro ORDER BY Fecha DESC"
Saludos,
Sin el GROUP BY no me deja hacer el COUNT, no es asi?
Yo creo que la unica forma de solucionar esto sera no al hacer el select sino al escribir la tabla. Es decir, yo hago primero un select, luego creo un bucle while coge uno a uno los valores obtenidos en el select y los mete en una celda de una tabla html para mostrarla por web. Asi que imagino que la unica solucion sera apañarlas para que en lugar de escribir linea a linea, se detecte que lo que se va a escribir pertenece a la misma fecha que el valor obtenido anteriormente y se escriba sumado a lo anterior, en lugar de en una nueva linea. Aunque aun tengo que pensar bien como hacerlo
salu2 y gracias por todo
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 22:24.