alexanderbulatov
@alexanderbulatov
Fullstack разработчик

Как сделать выборку из базы с использованием функций и удалить пустые результаты в этих функциях?

Здравствуйте!

Имеется таблица пользователей с полями
id, name, phone, email, created

А также ещё одна таблица, где хранятся заказы этих пользователей, со следующими полями
id, summa, user_id, created
Поле created хранится в таком формате Y-m-d H:i:s

И нужно получить одним запросом следующие данные:
1. Имя пользователя
2. Телефон пользователя
3. Сумму всех заказов пользователя
4. Средний чек пользователя
5. Когда пользователь последний раз делал заказ

При этом нужно убрать из результа запроса, когда записей в заказах вообще нет.

Я реализовал следующим образом:
SELECT users.name, users.phone, (SELECT MAX(orders.subtotal) FROM orders WHERE orders.user_id=1) as max_order, (SELECT ROUND(AVG(orders.subtotal)) FROM orders WHERE orders.user_id=1) as average_check, (SELECT MAX(orders.created) FROM orders WHERE orders.user_id=1) as last_day_of_order FROM users WHERE users.id=1


Но в этом варианте не учтено, что заказов может не быть вообще и нужно бы каким-то образом показать пустой результат.

Буду весьма благодарен за любую подсказку.
  • Вопрос задан
  • 27 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
select u.name, u.phone, sum(o.summa) total, avg(o.summa) average, max(o.created) last_date
from orders o, `users` u
where u.id=o.user_id
group by u.id
having total > 0


Я надеюсь, что "Поле created в формате Y-m-d H:i:s" это не строка, а DATETIME.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы