Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Mostrar Datos después de un GROUP BY

Estas en el tema de Mostrar Datos después de un GROUP BY en el foro de Mysql en Foros del Web. Buen día compañeros, Lo que sucede es que agrupo dos filas de la tabla con el mismo Id el cual es una direccion pero lo ...
  #1 (permalink)  
Antiguo 09/10/2015, 11:04
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Mostrar Datos después de un GROUP BY

Buen día compañeros,

Lo que sucede es que agrupo dos filas de la tabla con el mismo Id el cual es una direccion pero lo que sucede es que las dos lineas tiene diferentes datos, y quisiera mostrar otro dato de esa misma agrupación.

Los datos vienen algo así:

ENVIADO | 56 | JUAN VARGAS | CALLE 40 F | 5615895 | CALL CENTER | 09/10/2015 10:00
ACEPTADO | 56 | JUAN VARGAS | CALLE 40 F | 5615895 | PUNTO CALLE 100 | 09/10/2015 10:15

Yo agrupo estos datos por Id (dirección) 'CALLE 40 F' y me los muestra así, en una sola linea:

ACEPTADO | 56 | JUAN VARGAS | CALLE 40 F | 5615895 | CALL CENTER | 09/10/2015 10:15

Pero... no quiero que salga CALL CENTER si no PUNTO CALLE 100 en esa agrupación.

Agradezco su colaboración
__________________
La vida es un juego de Ajedrez.
  #2 (permalink)  
Antiguo 09/10/2015, 11:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar Datos después de un GROUP BY

y cual es tu query?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/10/2015, 11:16
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

SELECT *, COUNT(*) AS 'Total' FROM `intranet` GROUP BY Direccion ORDER BY FechaIni DESC
__________________
La vida es un juego de Ajedrez.
  #4 (permalink)  
Antiguo 09/10/2015, 11:23
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar Datos después de un GROUP BY

Código MySQL:
Ver original
  1. SELECT *, COUNT(*) AS 'Total' FROM `intranet` where columna1=´aceptado´ GROUP BY Direccion ORDER BY FechaIni DESC
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 09/10/2015, 11:32
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

No aún no me entiendes Jaha

Es un listado de muchos de estos, lo que necesito es que en vez de mostrar 'CALL CENTER' muestre el punto de venta en esté caso 'PUNTO CALLE 100'

Digamos que NO agrupo y sale algo así:

ENVIADO | 56 | JUAN VARGAS | CALLE 40 F | 5615895 | CALL CENTER | 09/10/2015 10:00
ACEPTADO | 56 | JUAN VARGAS | CALLE 40 F | 5615895 | PUNTO CALLE 100 | 09/10/2015 10:15

ENVIADO | 56 | ANDRES DURAN | CALLE 40 F - 6 | 5615895 | CALL CENTER | 09/10/2015 10:00
ACEPTADO | 56 | ANDRES SURAN | CALLE 40 F - 6| 5615895 | PUNTO CALLE 69 | 09/10/2015 10:15

Al agrupar me sale siempre así:

ACEPTADO | 56 | JUAN VARGAS | CALLE 40 F | 5615895 | CALL CENTER | 09/10/2015 10:15
ACEPTADO | 56 | ANDRES DURAN | CALLE 40 F -6 | 5615895 | CALL CENTER | 09/10/2015 10:15


Aparece también CALL CENTER yo quiero que aperazca es el punto de venta por donde es Aceptado en este caso que aparezca así (después de agruparlo):

ACEPTADO | 56 | JUAN VARGAS | CALLE 40 F | 5615895 | PUNTO CALLE 100 | 09/10/2015 10:15
ACEPTADO | 56 | ANDRES DURAN | CALLE 40 F -6 | 5615895 | PUNTO CALLE 69 | 09/10/2015 10:15
__________________
La vida es un juego de Ajedrez.
  #6 (permalink)  
Antiguo 09/10/2015, 11:49
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar Datos después de un GROUP BY

no te entiendo o no te das a entender?? te pedi tu consulta y me das un select count(*), ahora cual es el discriminante para saber que el valor que quieres es el segundo? porque si es que sea punto calle, porque en tu query no pones en el where que el valor de ese campo se punto calle??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 09/10/2015, 11:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar Datos después de un GROUP BY

Primera pregunta: ¿por qué razón agrupas?
Segunda pregunta: ¿entiendes como funciona el GROUP BY en MySQL?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 09/10/2015, 11:52
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Primera pregunta: ¿por qué razón agrupas?
Segunda pregunta: ¿entiendes como funciona el GROUP BY en MySQL?
Agrupo por que es mucha información y estoy manejando los estados mediante php.

El group by agrupa todos las filas de un mismo Id.

El requerimiento que me piden es que necesitan que se muestre el punto a donde llega 'PUNTO CALLE 100' no 'CALL CENTER'.
__________________
La vida es un juego de Ajedrez.
  #9 (permalink)  
Antiguo 09/10/2015, 11:59
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

Cita:
Iniciado por Libras Ver Mensaje
no te entiendo o no te das a entender?? te pedi tu consulta y me das un select count(*), ahora cual es el discriminante para saber que el valor que quieres es el segundo? porque si es que sea punto calle, porque en tu query no pones en el where que el valor de ese campo se punto calle??
Te explicaré un poco.

Son datos que llegan de una intranet en un txt los cuales almaceno en una base de datos y ellos caen con estado ACEPTADO y ENVIADO lo que hago yo es unirlos por medio de la dirección por que es el unico valor que permanece en las dos filas. El count es por que necesito saber cuantas veces aparece esta dirección, y si aparece una vez o las dos.

Ahora lo que tu planteas es que coloque:

a lo que le llamas punto calle se llama PVenta*

WHERE PVenta==Pventa o PVenta="Pventa"

No se como hacer esa parte solo me falta eso
__________________
La vida es un juego de Ajedrez.
  #10 (permalink)  
Antiguo 09/10/2015, 12:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar Datos después de un GROUP BY

Cita:
Iniciado por ImHarold Ver Mensaje
Agrupo por que es mucha información y estoy manejando los estados mediante php.

El group by agrupa todos las filas de un mismo Id.

El requerimiento que me piden es que necesitan que se muestre el punto a donde llega 'PUNTO CALLE 100' no 'CALL CENTER'.

El GROUP BY en MySQL tiene un comportamiento algo diferente que en otros DBMS y esta afectando tus resultados.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 09/10/2015, 13:05
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

Me recomiendas algo ?
__________________
La vida es un juego de Ajedrez.
  #12 (permalink)  
Antiguo 09/10/2015, 13:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar Datos después de un GROUP BY

Tomando tu propio ejemplo, intentemos:
Código MySQL:
Ver original
  1.   (SELECT *, COUNT(*) Total
  2.   FROM `intranet`
  3.   ORDER BY FechaIni DESC)
  4. GROUP BY Direccion;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 09/10/2015, 13:12
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

Me arroja un warining 'Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in...'

En Mysql me arroja: #1248 - Every derived table must have its own alias
__________________
La vida es un juego de Ajedrez.
  #14 (permalink)  
Antiguo 09/10/2015, 13:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar Datos después de un GROUP BY

Eso no es un error de MySQL, sino de PHP, y si no capturas el error devuelto por MySQL nunca sabremos de qué se trata.

Los temas de programación son OFF TOPIC en los foros de BBDD, asi que te recomiendo no postear el script. Solo revisa en phpMyadmin qué error devuelve, si es que devuelve alguno.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 09/10/2015, 13:25
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Eso no es un error de MySQL, sino de PHP, y si no capturas el error devuelto por MySQL nunca sabremos de qué se trata.

Los temas de programación son OFF TOPIC en los foros de BBDD, asi que te recomiendo no postear el script. Solo revisa en phpMyadmin qué error devuelve, si es que devuelve alguno.
Si disculpa el error es el siguiente: En Mysql me arroja: #1248 - Every derived table must have its own alias

Le acabo de poner el alias:

Código MySQL:
Ver original
  1. (SELECT *, COUNT(*) Total FROM `intranet`
  2. ORDER BY FechaIni DESC) AS SubQuery
  3. GROUP BY Direccion

Me sale lo siguiente:

Id
Estado
Telefono
PVenta
Nombre
Apellido
Direccion
FechaIni
Valor
Agente
FechaCrr
Total

1
ENVIADO
3013543116 :MNDB
CALLCENTER
BRENT
WILLIAM
CRA 77B# 48C 22 GARAJE CAFE
2015-10-09 12:23:12
56301
JHOAN
2015-10-09 12:23:53
331


Al parecer agrupa todas las lineas .~.
__________________
La vida es un juego de Ajedrez.
  #16 (permalink)  
Antiguo 09/10/2015, 13:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar Datos después de un GROUP BY

Por favor, pon una captura de la tabla. Poner la lista de esa forma confunde y no se entiende ni medio cual es el real resultado.

Prueba:
Código MySQL:
Ver original
  1.   (SELECT *, COUNT(*) Total
  2.   FROM `intranet`
  3.   ORDER BY FechaIni DESC) tabla
  4. GROUP BY Nombre, Apellido, Direccion
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #17 (permalink)  
Antiguo 09/10/2015, 13:34
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

No me deja insertar imagenes .-. me pide link
__________________
La vida es un juego de Ajedrez.
  #18 (permalink)  
Antiguo 09/10/2015, 13:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar Datos después de un GROUP BY

FDW no permite subir imagenes a nadie. Este no es un repositorio de archivos.

Subela a un repositorio publico y usa el link para poner la imagen, como hacemos todos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #19 (permalink)  
Antiguo 09/10/2015, 13:44
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY



Mira...

Al parecer los agrupa todo .-.
__________________
La vida es un juego de Ajedrez.
  #20 (permalink)  
Antiguo 09/10/2015, 13:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar Datos después de un GROUP BY

OK, exactamente por eso te decía que MySQL tiene un comportamiento particular.

En primer lugar, a diferencia de los demás DBMS, te permite agrupar por sólo una parte de los campos del SELECT, mientras que los demás exigen que esté todos los no afectados por las clausulas o funciones agrupadas.
Además también te permite agrupar por campos que NO ESTÁN en el SELECT, cosa que ningún otro DBMS admite.
Pero a esto hay que sumarle un efecto: Como te permite indicar parte de los campos, o campos no seleccionados, lo que puede suceder es que tome el primer valor encontrado en esa tabla para ese campo o campos de agrupamiento, y "pise" todos los demás registros que encuentre, escondiéndolos por decirlo de ese modo.

Por eso, para que devuelva el mayor valor de algo, primero debes ordenar, y recién entonces agrupar. Pero como el ORDER BY no puede ir antes del GROUP BY, entonces hay que hacerlo en una tabla derivada (lo que te puse).

¿Se entiende como es el tema?

Ahora bien, en tu caso el problema se resuelve determinando qué columnas (campos) deben ir en el GROUP BY para permitir que te muestre todos los registros que buscas. Tiene que ser un grupo discriminante, cuyos valores solo cambien en grupo en los registros que deben aparecer.
Lamentablemente tus posteos no son muy claros en ese sentido. Apenas se entienden los datos y sin ellos no podemos hacer pruebas que te sirvan.

¿Probaste la ultima query que te puse? Alli te puse una posibilidad.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #21 (permalink)  
Antiguo 09/10/2015, 14:11
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Mostrar Datos después de un GROUP BY

Cita:
Iniciado por gnzsoloyo Ver Mensaje

¿Se entiende como es el tema?

Ahora bien, en tu caso el problema se resuelve determinando qué columnas (campos) deben ir en el GROUP BY para permitir que te muestre todos los registros que buscas. Tiene que ser un grupo discriminante, cuyos valores solo cambien en grupo en los registros que deben aparecer.
Lamentablemente tus posteos no son muy claros en ese sentido. Apenas se entienden los datos y sin ellos no podemos hacer pruebas que te sirvan.

¿Probaste la ultima query que te puse? Alli te puse una posibilidad.
Entiendo claramente por que asimilaba que así pasaba (que tomaba el primero y aplastaba los demás) y lo de hacer el orden primero y después agruparlo también lo había pensado. Que necesitas saber es que es algo complicado Jaha xs de explicar por eso solo les pedía si se podía ordenar de manera que saliera un dato especifico que se encuentra en ese grupo (entre los datos aplastados por así decirlo).

Dime que necesitas saber? estructura función... con que fin...¿?
__________________
La vida es un juego de Ajedrez.

Etiquetas: group, tabla
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:32.