База данных "Продажи"
Каждый "sold_by" - это человек, который совершил эту конкретную продажу. Моя цель состоит в том, чтобы самая последняя «sale_date», сгруппированная по «sold_by», возвращала одну запись для каждой уникальной записи «sold_by» (которая хранится как целое число в моей базе данных, но это пример)
╔═════════╦═════════╦══════════════════╗
║ sale_id ║ sold_by ║ sale_date ║
╠═════════╬═════════╬══════════════════╣
║ 0 ║ PETER ║ 01/01/2017 00:00 ║
║ 1 ║ JOHN ║ 01/01/2017 00:00 ║
║ 2 ║ PETER ║ 30/03/2017 00:00 ║
║ 3 ║ JOHN ║ 03/02/2017 00:00 ║
║ 4 ║ SIMON ║ 04/02/2017 00:00 ║
║ 5 ║ JOHN ║ 05/01/2017 00:00 ║
║ 6 ║ SIMON ║ 26/01/2017 00:00 ║
║ 7 ║ PETER ║ 07/01/2017 00:00 ║
║ 8 ║ SIMON ║ 28/01/2017 00:00 ║
║ 9 ║ JOHN ║ 09/01/2017 00:00 ║
║ 0 ║ PETER ║ 20/01/2017 00:00 ║
╚═════════╩═════════╩══════════════════╝
Пример базы данных для account_manager_sellers (обратите внимание, идентификатор соответствует sold_by
в таблице выше.
╔════╦══════════════╗
║ id ║ company_name ║
╠════╬══════════════╣
║ 0 ║ PETER ║
║ 1 ║ JOHN ║
║ 2 ║ SIMON ║
╚════╩══════════════╝
Пример ниже работает, но не работает должным образом, он не получает минимальную или максимальную дату, а, по-видимому, возвращает случайную дату из середины базы данных.
SELECT `sold_by`, `sale_date`
FROM `sales`
NATURAL JOIN (
SELECT `sold_by`, MAX(`sale_date`) AS entry_date
FROM `sales`
GROUP BY `sold_by`
) AS tmin
JOIN `account_manager_sellers` USING (`id`)
WHERE `sale_date` < '2017-03-31 00:00:00';
ОБНОВЛЕНИЕ: (Я также обновил код выше, чтобы соответствовать правильным именам столбцов)
В конечном счете, мне нужно получить ОДНУ запись для каждого уникального sold_by
, но это должна быть самая последняя дата. Таким образом, из первой таблицы, приведенной выше, он вернется:
+---+-------+------------------+
| 2 | PETER | 30/03/2017 00:00 |
+---+-------+------------------+
| 3 | JOHN | 03/02/2017 00:00 |
+---+-------+------------------+
| 4 | SIMON | 04/02/2017 00:00 |
+---+-------+------------------+
P.S. Я также попытался удалить MAX (sale_date
) из подзапроса и заменить его ORDER BY sale_date
LIMIT 1 (но, очевидно, он вернул только один единственный результат)
Большое спасибо в ожидании