• Viernes 19 de Abril de 2024, 09:07

Autor Tema:  Cómo Controlar El Group By ??  (Leído 2027 veces)

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Cómo Controlar El Group By ??
« en: Domingo 8 de Octubre de 2006, 23:17 »
0
Buenas.....

Bueno, haciendo un trabajo se me ha presentado un problema con el GROUP BY, y es como obtener el último dato ingresado (o el de mayor valor) de entre los agrupados.
Para ser más claro, supongamos que tengo las siguientes tablas:

Analisis:
Citar
id | id_producto | Cantidad | Vencimiento
1  | 1                | 10          | 12/2005
2  | 1                | 2            | 05/2006
3  | 2                | 55          | 06/2006
4  | 1                | 10          | 08/2006
5  | 2                | 12          | 08/2006

Productos:
Citar
id | Código
1  | AB1
2  | ZD2


La consulta que debo efectuar es:
Citar
SELECT *
FROM Productos
INNER JOIN Analisis ON Productos.id = Analisis.id_producto
WHERE Vencimiento < CURDATE()
GROUP BY Productos.id


El problema está en que necesito sacar el último vencimiento registrado de un análisis y en lo posible en una sola consulta, pero MySql me devuelve el primer registro que encuentra. Intenté com MAX para el id del anásis, ya que en teoría el vencimiento del último registro ingresado es superior al resto.
El problema es que necesito todos los datos, no solo el vencimiento, sino que el id y la cantidad. Y no puedo usar subquerys, ya que la version de mysql no me lo permite.  :(

Alquien sabe como hacerlo ??? tenía entendido que con MAX, pero no me sirve...

Desde ya les agradezco.
Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cómo Controlar El Group By ??
« Respuesta #1 en: Domingo 8 de Octubre de 2006, 23:55 »
0
Hola Altareum

Que te parece esta consulta....

Citar

Select p.*,max(vencimiento) FROM productos p,analisis a
WHERE p.id=a.id_producto GROUP BY p.id ORDER by p.id,vencimiento desc


o asi

Citar

Select p.*,max(vencimiento) FROM productos p,analisis a
WHERE p.id=a.id_producto and vencimiento<curdate() GROUP BY p.id ORDER by p.id,vencimiento desc

que es lo mismo :P


Suerte!
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Cómo Controlar El Group By ??
« Respuesta #2 en: Lunes 9 de Octubre de 2006, 00:11 »
0
Gracias F_Tanori....

Pero la verdad es que estoy en lo mismo.... ya que necesito todos los datos del analisis correspondiente al ultimo vencimiento, no solo la fecha... E ahí donde está mi problema, si ejecuto la consulta que me pasaste, me devuelve esto:

id | Codigo | id | id_producto | Cantidad | Vencimiento | max(vencimiento)
1  | AB1     | 1  | 1                | 10          | 12/2005       | 08/2006

Y como verás la cantidad corresponde al primer registro y no al del último vencimiento...  :(

Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Cómo Controlar El Group By ??
« Respuesta #3 en: Lunes 9 de Octubre de 2006, 09:59 »
0
que version estas utilizando?


tampoco admite vistas?
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Altareum

  • Miembro MUY activo
  • ***
  • Mensajes: 327
    • Ver Perfil
    • http://www.avian.com.ar
Re: Cómo Controlar El Group By ??
« Respuesta #4 en: Miércoles 11 de Octubre de 2006, 16:29 »
0
La versión es la 4.0 y algo....No, no admite vistas, Mysql incorporó las vistas en la versión 5 recién.
Lamentablemente el servidor donde tengo que hacerlo tiene esta versión y no puedo cambiarlo (ya que es un servidor pago).... Ya lo solucioné, pero con php y haciendo 2 consultas (lo cual no me gusta para nada).....

Pero aún sigo tienendo la duda... se puede ????

Altareum.
El postre!, el postre!, el postre!, el postre!, el postre!, el postre!.....
 | Klinka | Kiree | Avian |