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

Select agrupado

Estas en el tema de Select agrupado en el foro de Mysql en Foros del Web. Tengo una consulta tengo una tabla llamada articulos que tiene un campo llamado categoria quiero sacar un query que muestre los ultimos ID agrupados por ...
  #1 (permalink)  
Antiguo 29/11/2010, 09:57
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Pregunta Select agrupado

Tengo una consulta

tengo una tabla llamada articulos que tiene un campo llamado categoria quiero sacar un query que muestre los ultimos ID agrupados por categoria, he intentado con group by y select distinct pero no me sale

lo que necesito es sacar el ultimo articulo de cada categoria
  #2 (permalink)  
Antiguo 29/11/2010, 12:25
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

hola, que tal si das un poco mas de detalles respecto a tu modelo.
por que a simple vista podria ser algo basado en la agrupación Categoria y ordenamiento por Id peero aun asi estaria faltando un dato para el filtro, por que no posteas mas detalles haber si se te puede colaborar.

saludos
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #3 (permalink)  
Antiguo 29/11/2010, 12:29
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por Snaft_J1 Ver Mensaje
hola, que tal si das un poco mas de detalles respecto a tu modelo.
por que a simple vista podria ser algo basado en la agrupación Categoria y ordenamiento por Id peero aun asi estaria faltando un dato para el filtro, por que no posteas mas detalles haber si se te puede colaborar.

saludos
sucede que euna simple corsulta

campos

id
categoria
articulo

quiero sacar el ultimo articulo de cada categoria
  #4 (permalink)  
Antiguo 29/11/2010, 12:33
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

si, pero no lograras identificar cual fue el ultimo insertado de cada categoria a menos que tu tabla tenga un campo tipo bitacora que indique la fecha de creacion de cada registro (eso a modo de sugerencia).
otra forma podria ser (imaginando que el campo id es entero) hacer un select agrupado y ordenado por categoria, pero este necesitaria un subquery donde especificaras cual es el id mayor de cada categoria, con esto funcionaria.

en otras palabras para mi seria un query con subquery interno o un procedimiento almacenado.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #5 (permalink)  
Antiguo 29/11/2010, 12:35
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: Select agrupado

Es que los detalles de la tabla que das no son suficientes para saber a qué te refieres con "último artículo de cada categoría".
¿Último en base a qué criterio? ¿Cómo determinas cuál es el primero y el último? ¿Cómo se ordenan? ¿por cantidad, por fecha de ingreso, por precio?
¿FIFO, LIFO?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 29/11/2010, 12:37
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por Snaft_J1 Ver Mensaje
si, pero no lograras identificar cual fue el ultimo insertado de cada categoria a menos que tu tabla tenga un campo tipo bitacora que indique la fecha de creacion de cada registro (eso a modo de sugerencia).
otra forma podria ser (imaginando que el campo id es entero) hacer un select agrupado y ordenado por categoria, pero este necesitaria un subquery donde especificaras cual es el id mayor de cada categoria, con esto funcionaria.

en otras palabras para mi seria un query con subquery interno o un procedimiento almacenado.
jejeje es lo que he hecho he tratado con select agrupado pero este no se ordena msiempre trae el primer registro de cada grupo

tambien he tratado con select distinct
  #7 (permalink)  
Antiguo 29/11/2010, 12:37
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

Exacto gnzsoloyo.
gracias por la claridad je je je.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #8 (permalink)  
Antiguo 29/11/2010, 12:39
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

Cita:
jejeje es lo que he hecho he tratado con select agrupado pero este no se ordena msiempre trae el primer registro de cada grupo

tambien he tratado con select distinct
por eso compañero, si te fijas
Cita:
si, pero no lograras identificar cual fue el ultimo insertado de cada categoria a menos que tu tabla tenga un campo tipo bitacora que indique la fecha de creacion de cada registro (eso a modo de sugerencia).
otra forma podria ser (imaginando que el campo id es entero) hacer un select agrupado y ordenado por categoria, pero este necesitaria un subquery donde especificaras cual es el id mayor de cada categoria, con esto funcionaria.

en otras palabras para mi seria un query con subquery interno o un procedimiento almacenado.
esl o qeu te estoy diciendo, te faltan criterios.

o mas directo:
Cita:
Es que los detalles de la tabla que das no son suficientes para saber a qué te refieres con "último artículo de cada categoría".
¿Último en base a qué criterio? ¿Cómo determinas cuál es el primero y el último? ¿Cómo se ordenan? ¿por cantidad, por fecha de ingreso, por precio?
¿FIFO, LIFO?
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #9 (permalink)  
Antiguo 29/11/2010, 12:59
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por Snaft_J1 Ver Mensaje
por eso compañero, si te fijas

esl o qeu te estoy diciendo, te faltan criterios.

o mas directo:
el ultimo ID de cara categoria eso quiero ejemplo numero 4

id categoria articulo

1 55 hdshfhsaf
2 55 fhjsd bfsjh
3 76 nvdfknds


quiero sacar de categoria 55 el ultimo ID o sea el numero 2 igual para todas las demas categoria

si con esto no me entiendes me doy por vencido
  #10 (permalink)  
Antiguo 29/11/2010, 13:02
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

jejejeje, yo te entiendo, el que no me esta entendiendo eres tu.
a ese ejemplo que planteas ya le di una respuesta mas atras
Cita:
otra forma podria ser (imaginando que el campo id es entero) hacer un select agrupado y ordenado por categoria, pero este necesitaria un subquery donde especificaras cual es el id mayor de cada categoria, con esto funcionaria.

en otras palabras para mi seria un query con subquery interno o un procedimiento almacenado.
espero ahora si me comprendas .
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #11 (permalink)  
Antiguo 29/11/2010, 13:03
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por Snaft_J1 Ver Mensaje
por eso compañero, si te fijas

esl o qeu te estoy diciendo, te faltan criterios.

o mas directo:
ahora soy yo el k no entiende a que te refieres?
  #12 (permalink)  
Antiguo 29/11/2010, 13:10
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por Snaft_J1 Ver Mensaje
jejejeje, yo te entiendo, el que no me esta entendiendo eres tu.
a ese ejemplo que planteas ya le di una respuesta mas atras


espero ahora si me comprendas .
ok pero kiero kiero que me muestres el query porke lo he hecho asi y no me ha resultado
  #13 (permalink)  
Antiguo 29/11/2010, 13:28
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

ok, jejeje, acabo de hacer un ejemplo pero en lugar de categorias he puesto roles y permisos ok?

Código MySQL:
Ver original
  1. SELECT r.id,
  2. (
  3.   Select max(Id)
  4.   From role_perms
  5.   Where roleid = r.id
  6. ) As Item
  7. FROM roles r
donde, categorias = roles y productos = permisos, espero haber sido claro esta vez.

saludos.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #14 (permalink)  
Antiguo 29/11/2010, 13:46
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

ok dejame probar yta te cuento
  #15 (permalink)  
Antiguo 29/11/2010, 13:49
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por Snaft_J1 Ver Mensaje
ok, jejeje, acabo de hacer un ejemplo pero en lugar de categorias he puesto roles y permisos ok?

Código MySQL:
Ver original
  1. SELECT r.id,
  2. (
  3.   Select max(Id)
  4.   From role_perms
  5.   Where roleid = r.id
  6. ) As Item
  7. FROM roles r
donde, categorias = roles y productos = permisos, espero haber sido claro esta vez.

saludos.
y role_perms ? muy complejo
  #16 (permalink)  
Antiguo 29/11/2010, 13:57
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por chavewain2 Ver Mensaje
y role_perms ? muy complejo
al fina termine resolviendolo gracias por tu codigo use un poco de tu select anidado

SELECT a.categoria, (SELECT max(id) FROM articulos WHERE categoria = a.categoria) As Item FROM articulos a group by categoria
  #17 (permalink)  
Antiguo 29/11/2010, 14:06
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por chavewain2 Ver Mensaje
al fina termine resolviendolo gracias por tu codigo use un poco de tu select anidado

SELECT a.categoria, (SELECT max(id) FROM articulos WHERE categoria = a.categoria) As Item FROM articulos a group by categoria
ahora necesito saber como saco los demas campos
  #18 (permalink)  
Antiguo 29/11/2010, 14:09
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

SELECT a.categoria, a.articulo, a.titulo, a.subtitulo, (SELECT max(id) FROM articulos WHERE categoria = a.categoria) As item_id FROM articulos a group by categoria

resuelto
  #19 (permalink)  
Antiguo 29/11/2010, 14:24
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

jejejeje, esa era la idea, que cambiaras los datos necesarios.

la pregunta es, de veras es necesario el group by?

yo no lo necesite.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #20 (permalink)  
Antiguo 29/11/2010, 14:25
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por chavewain2 Ver Mensaje
SELECT a.categoria, a.articulo, a.titulo, a.subtitulo, (SELECT max(id) FROM articulos WHERE categoria = a.categoria) As item_id FROM articulos a group by categoria

resuelto
no me funciona aun
  #21 (permalink)  
Antiguo 29/11/2010, 14:26
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

el titulo que me muestra no va relacionado al id mayor
  #22 (permalink)  
Antiguo 29/11/2010, 14:28
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

jajajajajjaja, haber yo te lo paso.
Código MySQL:
Ver original
  1. SELECT c.id,
  2. (
  3.   SELECT max(Id)
  4.   FROM articulos
  5.   WHERE idcategoria = c.id
  6. ) As Item
  7. FROM Categorias c
prueba eso y me cuentas
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #23 (permalink)  
Antiguo 29/11/2010, 14:29
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

no entiendo esto:
Cita:
el titulo que me muestra no va relacionado al id mayor
voy a revisar tu quiery, el tituo que necesitas ver es del articulo verdad?
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #24 (permalink)  
Antiguo 29/11/2010, 14:44
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

creo que asi si me funciona

SELECT a.categoria, a.articulo, a.titulo, a.subtitulo, a.id from articulos a where a.id in (select max(id) from articulos group by categoria) order by id desc
  #25 (permalink)  
Antiguo 29/11/2010, 14:47
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por chavewain2 Ver Mensaje
creo que asi si me funciona

SELECT a.categoria, a.articulo, a.titulo, a.subtitulo, a.id from articulos a where a.id in (select max(id) from articulos group by categoria) order by id desc
ok despues de hacer varias pruebas por fin lo consegui gracias Snaft_J1 por tu ayuda, espero que este codigo le sirva a otros novatos como yo
  #26 (permalink)  
Antiguo 29/11/2010, 14:49
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

lo que sucede, es que con el query que te estoy mostrando, lo que hago es que voy de modo subyasente, es decir, selecciona las categorias y posteriormente por cada categoria selecciona el id del articulo mas reciente, en tu caso estas seleccionando todo desde la misma entidad por eso te resulta algo complejo.

pero aun asi, creo que lo haz logrado jejjeje, lo interesante es que verifiques el rendimiento de tu query con el tiempo.


saludos y buena suerte.
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....
  #27 (permalink)  
Antiguo 30/11/2010, 07:49
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Select agrupado

Cita:
Iniciado por Snaft_J1 Ver Mensaje
lo que sucede, es que con el query que te estoy mostrando, lo que hago es que voy de modo subyasente, es decir, selecciona las categorias y posteriormente por cada categoria selecciona el id del articulo mas reciente, en tu caso estas seleccionando todo desde la misma entidad por eso te resulta algo complejo.

pero aun asi, creo que lo haz logrado jejjeje, lo interesante es que verifiques el rendimiento de tu query con el tiempo.


saludos y buena suerte.
Bueno es habia probado de la forma en la que me mostraste inicialmente pero hacia dos consultas separadas es decir me mostraba el ultimo id de cada categoria pero el dato relacionado a ese id no se correspondia, es decir el campo articulo y los demas eran correspondientes al primer id de cada categoria no al ultimo.

creo que pueda afectar el rendimiento de la manera en que lo hice pero no habia mas solucion, ademas la diferencia es de micro segundos.
  #28 (permalink)  
Antiguo 30/11/2010, 08:05
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Select agrupado

sip, con el tiempo seguro no sera de segundos je je je, lo importante es tenerlo presente y poder tener la contingencia posible
__________________
-= El conocimiento y el saber te hacen un ser libre =-
Ando en busca de conocimiento....

Etiquetas: select
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 07:57.