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

Ayuda con Group By having

Estas en el tema de Ayuda con Group By having en el foro de Mysql en Foros del Web. Hola, necesito ayuda con la siguiente sentencia, tengo una tabla cod version nombre 1 0 ana 1 1 jaime 2 0 luis 3 0 maria ...
  #1 (permalink)  
Antiguo 21/09/2009, 01:59
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 15 años, 4 meses
Puntos: 0
Ayuda con Group By having

Hola, necesito ayuda con la siguiente sentencia, tengo una tabla

cod version nombre
1 0 ana
1 1 jaime
2 0 luis
3 0 maria
3 1 andrea
3 2 maria

y quiero sacar los cod agrupados y la versión mayor de cada cod

1 1 jaime
2 0 luis
3 2 maria

He intentado
SELECT cod_of, max(v_of), nombre
FROM tabla
group by cod_of;

Pero al tener más campos 'nombre' iguales la sentencia se hace incoherente con los datos
  #2 (permalink)  
Antiguo 21/09/2009, 05:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Busqueda Respuesta: Ayuda con Group By having

Código sql:
Ver original
  1. SELECT cod_of, MAX(v_of) AS version
  2. FROM tabla
  3. GROUP BY cod_of;

Esto te da la version maxima, ahora nos falta el nombre...

Código sql:
Ver original
  1. SELECT sbc.cod_of, sbc.version, t2.nombre
  2.   FROM (SELECT t1.cod_of, MAX(t1.v_of) AS version
  3.                FROM tabla AS t1
  4.                GROUP BY t1.cod_of) AS sbc
  5.     LEFT JOIN tabla AS t2
  6.     ON sbc.cod_of=t2.cod_of
  7.       AND sbc.version=t1.v_of;

Espero que no tengas dos nombres asociados a la versión máxima del mismo codigo.

Quim
  #3 (permalink)  
Antiguo 21/09/2009, 09:59
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda con Group By having

Muchas gracias por tu ayuda!!
pero al final opté por lo fácil, saque cada código con su versión máxima, y a raíz de ahí por cada fila devuelta ejecuto otra sentencia sql y saco los demas datos de la tabla.

Código PHP:
$Sql_max_v="select cod_of, max(v_of) from ofertas group by cod_of"//selecciono el cod_of con su maxima version
$result_max_v=mysql_query($Sql_max_v,$link); //numero de filas a mostrar y codigo con sus versiones
$num_reg=mysql_num_rows($result_max_v);
$datos_codigomysql_fetch_row($result_max_v);
$Sql_datos="SELECT * from ofertas where cod_of='$datos_codigo[0]' and v_of='$datos_codigo[1]' order by cod_of";
$result_datos=mysql_query($Sql_datos,$link); 
$datos_ofertamysql_fetch_row($result_datos); 
Gracias.
  #4 (permalink)  
Antiguo 22/09/2009, 00:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Ayuda con Group By having

Analiza mi opción, es lo mismo pero con una sola consulta al servidor...

Quim
  #5 (permalink)  
Antiguo 22/09/2009, 03:22
 
Fecha de Ingreso: julio-2009
Mensajes: 28
Antigüedad: 15 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Ayuda con Group By having

Cita:
Iniciado por quimfv Ver Mensaje
Analiza mi opción, es lo mismo pero con una sola consulta al servidor...

Quim
Muchas gracias, es una mejor opción sin duda , lo único que la versión de Mysql que tengo instalada me da error en la consulta. :-p
Por lo que he leído hay versiones en las que no funcionan bien las Join.


Muchas gracias!!!
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:57.