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

Mostrar Maximos

Estas en el tema de Mostrar Maximos en el foro de Mysql en Foros del Web. Hola, mi consulta es la siguiente, tengo una tabla lista_precios, similar a esto: Lote Cod_Producto Nombre Precio Semana_Antiguedad Semana_Curso L1 C1 N1 120 24 24 ...
  #1 (permalink)  
Antiguo 07/04/2010, 10:45
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 10 meses
Puntos: 0
Sonrisa Mostrar Maximos

Hola, mi consulta es la siguiente, tengo una tabla lista_precios, similar a esto:

Lote Cod_Producto Nombre Precio Semana_Antiguedad Semana_Curso
L1 C1 N1 120 24 24
L1 C1 N1 100 25 25
L2 C2 N2 130 25 25
L2 C2 N2 80 26 0
L3 C3 N3 180 24 24

Ahora bien, suponiendo que estamos en la semana 25 necesito que me aparezca


Lote Cod_Producto Nombre Precio Semana_Antiguedad Semana_Curso

L1 C1 N1 100 25 25
L2 C2 N2 130 25 25
L3 C3 N3 180 24 24

En resumen necesito que aparezca los registros con semana de antiguedad X, ademas EL ULTIMO REGISTRO que tenga antiguedad inferior a X. Osea si un producto tiene antiguedad hasta 25 y estamos en la semana 27, debe aparecer.


Estimados estaria eternamente agradecido si alguien pudiese ayudarme. me e cabeceado muxo y no logro hacer la consulta.

Todo esto es en MYSQL y PHP.

saludos a todos.

La query es lal siguiente:

# MySQL-Front 5.0 (Build 1.268)

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */;
/*!40101 SET SQL_MODE='' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES */;
/*!40103 SET SQL_NOTES='ON' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS */;
/*!40014 SET FOREIGN_KEY_CHECKS=0 */;


# Host: localhost Database: sistema_ventas
# ------------------------------------------------------
# Server version 5.0.45-community-nt

#
# Source for table lista_precios
#

DROP TABLE IF EXISTS `lista_precios`;
CREATE TABLE `lista_precios` (
`ID_LISTA` int(11) NOT NULL auto_increment,
`LOTE` varchar(255) default NULL,
`COD_PRODUCTO` varchar(255) default NULL,
`NOMBRE_PRODUCTO` varchar(255) default NULL,
`MARCA` varchar(255) default NULL,
`FAMILIA` varchar(255) default NULL,
`TIPO` varchar(255) default NULL,
`PRECIO` int(11) default NULL,
`SEMANA_ANTIGUEDAD` int(11) default NULL,
`SEMANA_CURSO` int(11) default NULL,
PRIMARY KEY (`ID_LISTA`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;

#
# Dumping data for table lista_precios
#
LOCK TABLES `lista_precios` WRITE;
/*!40000 ALTER TABLE `lista_precios` DISABLE KEYS */;

INSERT INTO `lista_precios` VALUES (1,'LOT.PO.25.3','PO_POL-TS','Polera Polo Rosada Talla S','Polo','Polera Picke','Polera',29990,26,26);
INSERT INTO `lista_precios` VALUES (2,'LOT.PO.25.3','PO_POL-TS','Polera Polo Rosada Talla S','Polo','Polera Picke','Polera',25990,27,0);
INSERT INTO `lista_precios` VALUES (3,'LOT.PA.26.3','PAN_DOCK-T54','Pantalon Dockers Talla 53','Dockers','Pantalon Cargo','Pantalon',32990,24,24);
INSERT INTO `lista_precios` VALUES (4,'LOT.PA.26.3','PAN_DOCK-T54','Pantalon Dockers Talla 53','Dockers','Pantalon Cargo','Pantalon',29990,25,25);
INSERT INTO `lista_precios` VALUES (5,'LOT.PA.26.3','PAN_DOCK-T54','Pantalon Dockers Talla 53','Dockers','Pantalon Cargo','Pantalon',23990,26,26);
INSERT INTO `lista_precios` VALUES (6,'LOT.ZA.30.3','ZA_CAT_T-42','Zapatos Cat Talla 42','Catterpillar','Calzado','Zapato',42990,25,25) ;
/*!40000 ALTER TABLE `lista_precios` ENABLE KEYS */;
UNLOCK TABLES;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;


Última edición por jasonrd3; 07/04/2010 a las 11:53
  #2 (permalink)  
Antiguo 07/04/2010, 11:35
Avatar de ikaroraul  
Fecha de Ingreso: octubre-2006
Ubicación: La Paz
Mensajes: 391
Antigüedad: 17 años, 7 meses
Puntos: 16
Respuesta: Mostrar Maximos

Si colocas los QUERYS con la estructura y datos... cosa de poder importar la tabla sera mas facil solucionar tu problema... pues asi da pereza crear una tabla e insertar datos.

SAludos
__________________
Msn: [email protected]
  #3 (permalink)  
Antiguo 07/04/2010, 11:51
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Mostrar Maximos

ok colocare las querys
  #4 (permalink)  
Antiguo 07/04/2010, 11:52
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, 5 meses
Puntos: 2658
Respuesta: Mostrar Maximos

En principio es simplemente poner
Código MySQL:
Ver original
  1. ...
  2. ORDER BY Semana_Curso DESC, Lote ASC, Cod_Producto  ASC,
  3.                 Precio ASC, Semana_Antiguedad ASC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/04/2010, 13:53
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Mostrar Maximos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En principio es simplemente poner
Código MySQL:
Ver original
  1. ...
  2. ORDER BY Semana_Curso DESC, Lote ASC, Cod_Producto  ASC,
  3.                 Precio ASC, Semana_Antiguedad ASC
Hola, primero que todo gracias por la respuesta, lamentablemente no me resulta, mira la consulta que hago yo es la siguiente:

select *, MAX(SEMANA_CURSO) from lista_precios GROUP BY LOTE

pero me resulta a medias ya que la columna MAX(SEMANA_CURSO) esta bien, pero las demas no son correctas.

espero puedan ayudarme.
  #6 (permalink)  
Antiguo 07/04/2010, 14:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Mostrar Maximos

Prueba esta:
Código MySQL:
Ver original
  1. (SELECT LOTE, COD_PRODUCTO, NOMBRE_PRODUCTO, SEMANA_ANTIGUEDAD, SEMANA_CURSO FROM `lista_precios` where semana_curso = 25 ORDER BY semana_curso, semana_antiguedad)
  2. (SELECT LOTE, COD_PRODUCTO, NOMBRE_PRODUCTO, SEMANA_ANTIGUEDAD, SEMANA_CURSO FROM `lista_precios` where semana_curso < 25 ORDER BY semana_curso DESC, ID_LISTA DESC limit 1)
  #7 (permalink)  
Antiguo 07/04/2010, 15:11
 
Fecha de Ingreso: junio-2008
Mensajes: 22
Antigüedad: 15 años, 10 meses
Puntos: 0
Sonrisa Respuesta: Mostrar Maximos

Cita:
Iniciado por jurena Ver Mensaje
Prueba esta:
Código MySQL:
Ver original
  1. (SELECT LOTE, COD_PRODUCTO, NOMBRE_PRODUCTO, SEMANA_ANTIGUEDAD, SEMANA_CURSO FROM `lista_precios` where semana_curso = 25 ORDER BY semana_curso, semana_antiguedad)
  2. (SELECT LOTE, COD_PRODUCTO, NOMBRE_PRODUCTO, SEMANA_ANTIGUEDAD, SEMANA_CURSO FROM `lista_precios` where semana_curso < 25 ORDER BY semana_curso DESC, ID_LISTA DESC limit 1)
Compadre, quiero llorar, esta excelente.. eres grande. gracias a todos por responder tb.

saludos.
  #8 (permalink)  
Antiguo 12/04/2010, 21:50
Avatar de ikaroraul  
Fecha de Ingreso: octubre-2006
Ubicación: La Paz
Mensajes: 391
Antigüedad: 17 años, 7 meses
Puntos: 16
Respuesta: Mostrar Maximos

ups llegue tarde... pero vez que con insertar los SQL y algunos datos es ms facil para los que quieren resolver el preblema. asi solo importamos el SQL y hacemos las pruebas y algo siempre saldra.

Saludos.
__________________
Msn: [email protected]

Etiquetas: Ninguno
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 15:57.