Получить последнюю запись в соответствии с типом DATETIME из таблицы - PullRequest
0 голосов
/ 17 ноября 2011

Привет сообщество StackOverflow,

У меня есть 2 таблицы

products
=======
id
name

prices
======
id
product_id
price
date_added

Столбец date_added имеет тип DATETIME.

У меня вопрос, как мне выбрать products.name, Prices.price, Prices.date_added, где date_added является максимальным.

Результирующий набор должен содержать 1 строку для каждого продукта с ценой и максимальной датой_добавления.

Пожалуйста, дайте мне знать, если это недостаточно понятно!

ЗДЕСЬ НАБОР ЗАПИСЕЙ

INSERT INTO `prices` (`id`, `product_id`, `price`, `date_added`) VALUES
(1, 1, 1.23, '2011-11-16 13:18:14'),
(2, 1, 1.25, '2011-11-17 13:18:24'),
(3, 2, 1.5, '2011-11-15 13:18:32'),
(4, 3, 1.89, '2011-11-15 13:18:41'),
(5, 4, 0.98, '2011-11-14 13:18:57'),
(6, 5, 1.87, '2011-11-17 13:19:29'),
(7, 5, 1.98, '2011-11-16 13:19:44'),
(8, 3, 1.87, '2011-11-13 13:19:52'),
(9, 2, 1.45, '2011-11-05 13:20:01'),
(10, 1, 2.34, '2011-11-16 13:20:10'),
(11, 4, 2.87, '2011-11-18 13:49:21'),
(12, 5, 1.64, '2011-11-19 13:49:33');

INSERT INTO `products` (`id`, `name`) VALUES
(1, 'Karamhtros'),
(2, 'Tralalas'),
(3, 'Giwrgos'),
(4, 'Sotiris'),
(5, 'Tassos');

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Попробуйте это

SELECT p.name, pr.price, pr.date_added
FROM products p INNER JOIN prices pr
  ON p.id = pr.product_id
GROUP BY p.id
HAVING pr.date_added = MAX(pr.date_added)

ИЗМЕНЕНО после комментария пользователя:
Попробуйте это

SELECT p.id, p.name, pr.price, pr.date_added
FROM products p INNER JOIN prices pr
  ON p.id = pr.product_id
INNER JOIN (SELECT product_id, MAX(date_added) AS da 
            FROM prices GROUP BY product_id) pr2
  ON pr.product_id = pr2.product_id AND pr.date_added = pr2.da
2 голосов
/ 17 ноября 2011
SELECT p.name, pr.price, pr.date_added  
FROM products p
INNER JOIN prices pr ON (pr.product_id = p.id)
GROUP BY p.id
HAVING pr.date_added = MAX(pr.date_added)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...