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

Pequeño problema con GROUP BY

Estas en el tema de Pequeño problema con GROUP BY en el foro de Bases de Datos General en Foros del Web. Que tal foristas, tengo una consulta aver si me pueden hechar una mano, me explico tengo esta consulta de un campo autocompletar SELECT art. * ...
  #1 (permalink)  
Antiguo 23/04/2010, 01:05
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Pequeño problema con GROUP BY

Que tal foristas, tengo una consulta aver si me pueden hechar una mano, me explico

tengo esta consulta de un campo autocompletar

SELECT art. * , kar.can, kar.sto, kar.idkar
FROM art
INNER JOIN kar ON kar.idart = art.idart
WHERE art.des LIKE 'a%'

esta consulta me arroja 3 resultados ya que en la tabla kardex el campo idar se repite 3 veces

si le agrego al final la sentencia GROUP BY idar
me arrojara un resultado pero con el idkar que es menor, osea hay 3 idkar 667 ,668 y 669
me arroja el resultado con idkar 667, lo que necesito es hacer ese GROUP BY idar pero teniendo el idkar maximo,

lo intente con SELECT anidado y resulta pero la consulta demora3 segundos y eso no conviene

en conclusion

¿como hago un GROUP BY pero teniendo en cuenta el valor maximo de otra columna?

espero se me haya entendido y ojala alguien me pueda orientar, gracias de antemano,

SALUDOS!
  #2 (permalink)  
Antiguo 23/04/2010, 01:27
Avatar de CdG
CdG
 
Fecha de Ingreso: marzo-2008
Mensajes: 114
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Pequeño problema con GROUP BY

Código SQL:
Ver original
  1. SELECT art. * , kar.can, kar.sto, MAX(kar.idkar)
  2. FROM art
  3. INNER JOIN kar ON kar.idart = art.idart
  4. WHERE art.des LIKE 'a%'
si?
__________________
no quiero ser un árbol y caminar
Jacinto Piedra
  #3 (permalink)  
Antiguo 23/04/2010, 01:54
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Pequeño problema con GROUP BY

Hola, gracias

Código SQL:
Ver original
  1. SELECT art. * , kar.can, kar.sto, MAX( kar.idkar ) , idkar
  2. FROM art
  3. INNER JOIN kar ON kar.idart = art.idart
  4. WHERE art.des LIKE 'a%'
  5. GROUP BY idart
  6. LIMIT 0 , 30

mas el group BY idar me arroja un resultado , con la columna MAX , obtiene el maximo pero parece que solo lo muestra como referencia, aun me muestra la fila con idkar minimo
  #4 (permalink)  
Antiguo 23/04/2010, 02:10
Avatar de CdG
CdG
 
Fecha de Ingreso: marzo-2008
Mensajes: 114
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Pequeño problema con GROUP BY

y así?

Código SQL:
Ver original
  1. SELECT art. * , kar.can, kar.sto, kar.idkar, idkar
  2. FROM art
  3. INNER JOIN kar ON kar.idart = art.idart
  4. WHERE art.des LIKE 'a%'
  5. ORDER BY kar.idkar DESC
  6. GROUP BY idart
  7. LIMIT 0 , 30
__________________
no quiero ser un árbol y caminar
Jacinto Piedra
  #5 (permalink)  
Antiguo 23/04/2010, 02:23
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Pequeño problema con GROUP BY

lo intente asi

Código SQL:
Ver original
  1. SELECT art. * , kar.can, kar.sto, kar.idkar, idkar
  2. FROM art
  3. INNER JOIN kar ON kar.idart = art.idart
  4. WHERE art.des LIKE 'a%'
  5. GROUP BY idart
  6. ORDER BY kar.idkar DESC

ya lo habia intentado pero sigue obteniendo el resultado con el idkar minimo,

el resultado sin group by, sin pintar otras columnas sale algo asi

idart des idkar
Código HTML:
Ver original
  1. 1     ALAMBRE GALVANIZADO    671
  2. 1     ALAMBRE GALVANIZADO    670
  3. 1     ALAMBRE GALVANIZADO    669
pero con el group by me obtiene
idart des idkar
Código HTML:
Ver original
  1. 1     ALAMBRE GALVANIZADO    669

y necesito
Código HTML:
Ver original
  1. idart  des                   idkar  
  2. 1     ALAMBRE GALVANIZADO    671

parece simple pero no se como se hara, con un select anidado la consulta tarda mucho y es un autocompletar oea consulta cada vez q se presiona una tecla, gracias!
  #6 (permalink)  
Antiguo 23/04/2010, 02:38
Avatar de CdG
CdG
 
Fecha de Ingreso: marzo-2008
Mensajes: 114
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Pequeño problema con GROUP BY

se va la tercera
Código SQL:
Ver original
  1. SELECT art. * , kar.can, kar.sto, kar.idkar
  2. FROM art
  3. INNER JOIN kar ON (kar.idart = art.idart) AND MAX(kar.idkar)
  4. WHERE art.des LIKE 'a%'
__________________
no quiero ser un árbol y caminar
Jacinto Piedra
  #7 (permalink)  
Antiguo 23/04/2010, 02:57
 
Fecha de Ingreso: agosto-2005
Mensajes: 83
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Pequeño problema con GROUP BY

Error

Código SQL:
Ver original
  1. SELECT art. * , kar.can, kar.sto, kar.idkar, idkar
  2. FROM art
  3. INNER JOIN kar ON kar.idart = art.idart AND MAX(kar.idkar)
  4. WHERE art.des LIKE 'a%'
  5. GROUP BY idart

Código HTML:
Ver original
  1. #1111 - Invalid use of group function


  #8 (permalink)  
Antiguo 23/04/2010, 08:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP a Bases de Datos
  #9 (permalink)  
Antiguo 23/04/2010, 12:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Pequeño problema con GROUP BY

Postea las tablas kar y art

ej.
create table kar(idkar ineteger.... etc etc);

Y rtambien unos cuantos registros de cada tabla
ej.
insert into kar values(.... etc.)


Con esto, sabemos que datos tienes y que datos esperas. Ademas de facilitar a quien te quiere ayudar hacer sus pruebas y darte una respuesta adecuada.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: group
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 05:20.