У меня есть таблица заказов в моей БД (MySql), и там я хочу получить 4 поля.
Но мне просто нужен последний заказ, сделанный каждым клиентом, поэтому я использовал этот SQL-запрос.
SELECT
salesman,
client,
insert_date,
qtd_order
FROM
`orders`
WHERE
salesman = 'daniel.costa'
GROUP BY
client
ORDER BY
insert_date
Но он дает мне первый заказ, а не последний.
Не могли бы вы мне помочь?
Используйте правильный GROUP BY. Ваш запрос даже не имеет смысла.
Мне нужен последний заказ каждого клиента «Дэниела», поэтому я использовал «GROUP BY» на клиенте и «ORDER BY» в insert_date.






Вам нужно ORDER BY DESC, чтобы начать с самой последней ... И если вам нужен только 1, вы можете LIMIT 1 - Нет необходимости в GROUP BY
SELECT salesman, client, insert_date, qtd_order FROM
orders WHERE salesman = 'daniel.costa' ORDER BY insert_date DESC LIMIT 1
Да, он приносит мне все заказы всех клиентов от "daniel", но мне нужен только последний от каждого клиента "daniel", поэтому я использовал 'GROUP BY'
Значит ли это, что отправленный мной запрос не сработал? Если я вас правильно понял ... Этот запрос по-прежнему является наиболее эффективным способом сделать это. Что делает: 1) Получает все заказы от продаж, где продавец = Дэниел. ТОГДА он упорядочивает все эти продажи по дате, начиная с «последней» и нисходящий до самой старой = DESC. ЗАТЕМ он "выбирает" первый результат и отбрасывает остальные с помощью LIMIT 1.
Попробуйте добавить
DESCпослеORDER BY insert_date