Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/05/2013, 15:09
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años
Puntos: 447
Respuesta: obtener precio de varios articulos a determinada fecha

Hola nicokne:

En primer lugar deberías comenzar por decirnos ¿Qué BD es la que estás utilizando? aunque todos los motores utilizan SQL como lenguaje de consultas, existen diferencias sintácticas importantes entre cada uno de ellos. ahora bien, volvamos a tu problema... en realidad este tipo de consultas la hemos tratado muchísimas veces en este foro, me cuesta trabajo creer que no hayas encontrado ningún post que que pudiera servir... la idea es básicamente la siguiente... supongamos que tu BD es MySQL y que tienes la siguiente información:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +----------+------------+------------+--------+
  3. | order_id | article_id | price_date | price  |
  4. +----------+------------+------------+--------+
  5. |        1 |          6 | 2013-01-10 | 67.35  |
  6. |       45 |          7 | 2013-01-10 | 108.01 |
  7. |       89 |          8 | 2013-01-10 | 144.18 |
  8. |       10 |          9 | 2013-01-10 | 181.19 |
  9. |       12 |         10 | 2013-01-16 | 29.53  |
  10. |       32 |         11 | 2013-01-13 | 20.5   |
  11. |       56 |         11 | 2013-01-16 | 20.7   |
  12. |       12 |         11 | 2013-01-16 | 20.8   |
  13. |       74 |         11 | 2013-02-01 | 20.91  |
  14. |       63 |         13 | 2013-01-16 | 66.1   |
  15. |       85 |         14 | 2013-01-16 | 51.9   |
  16. |       44 |         14 | 2013-01-16 | 51.2   |
  17. |       94 |         14 | 2013-02-01 | 51.06  |
  18. |       77 |         15 | 2013-01-16 | 16.3   |
  19. +----------+------------+------------+--------+
  20. 14 rows in set (0.00 sec)

Ahora bien... en realidad lo que te interesa es obtener el MAX(order_id) para cara artículo, verificando sólo la fecha... esto lo obtienes de la siguiente manera:

Código MySQL:
Ver original
  1. mysql> SELECT MAX(order_id) max_order_id, article_id
  2.     -> FROM tabla
  3.     -> WHERE price_date <= '2013-01-16'
  4.     -> GROUP BY article_id;
  5. +--------------+------------+
  6. | max_order_id | article_id |
  7. +--------------+------------+
  8. |            1 |          6 |
  9. |           45 |          7 |
  10. |           89 |          8 |
  11. |           10 |          9 |
  12. |           12 |         10 |
  13. |           56 |         11 |
  14. |           63 |         13 |
  15. |           85 |         14 |
  16. |           77 |         15 |
  17. +--------------+------------+
  18. 9 rows in set (0.00 sec)

Observa que sólo te regresa un order_id para cada artículo. Una vez que tienes esta tabla lo único que tienes que hacer es FILTRAR LA INFORMACIÓN DE TU TABLA para regresar sólo los registros que EXISTAN en esta tabla... puedes hacerlo mediante un INNER JOIN o mediante la cláusula EXISTS...
Haz el intento y si tienes problemas, postea algo de lo que intentaste hacer y con gusto te ayudamos a resolver la consulta.

saludos
Leo.