Получить имя, дату и сумму из заказов в марте

#mysql #sql

#mysql #sql

Вопрос:

У меня есть этот запрос:

 SELECT * 
FROM ((orders_books 
JOIN books ON orders_books.id_book = books.id) 
JOIN orders ON orders_books.id_order=orders.id) 
JOIN users ON user_id=users.id 
WHERE date >='2019-03-1' AND date <= '2019-03-31';
  

Результат запроса:https://image.prntscr.com/image/s3ngzzYrSd27mFib9HbLmA.png

Я нахожу количество заказов:

 SELECT name, date, SUM(book_price) 
FROM ((orders_books 
INNER JOIN books ON orders_books.id_book = books.id) 
INNER JOIN orders ON orders_books.id_order=orders.id) 
INNER JOIN users ON user_id=users.id 
WHERE date >='2019-03-1' AND date <= '2019-03-31';
  

[Сумма для всех заказов]: https://image.prntscr.com/image/o88Hf4uKSHGuZ2ESUECzuA.png

Но мне нужно найти сумму заказа отдельно для каждого заказа.

Ответ №1:

Как насчет:

 SELECT id_order, SUM(book_price) 
FROM ((orders_books 
INNER JOIN books ON orders_books.id_book = books.id) 
INNER JOIN orders ON orders_books.id_order=orders.id) 
INNER JOIN users ON user_id=users.id 
WHERE date >='2019-03-1' AND date <= '2019-03-31'
GROUP BY id_order;
  

Комментарии:

1. @АлександрСавкин glad to help;)

Ответ №2:

 SELECT orders.id, SUM(book_price) 
FROM ((orders_books 
INNER JOIN books ON orders_books.id_book = books.id) 
INNER JOIN orders ON orders_books.id_order=orders.id) 
INNER JOIN users ON user_id=users.id 
WHERE date >='2019-03-1' AND date <= '2019-03-31'
GROUP BY order_id;
  

Комментарии:

1. Добро пожаловать в Stackoverflow.com ! Пожалуйста, не только предоставляйте код, добавьте объяснение ключевых частей. Вы пишете ответ не только для OP, но и для всех людей, которые попадут сюда в будущем.

Ответ №3:

Если вам нужна сумма для order.id затем используйте group by orders.id

     SELECT orders.id  SUM(book_price) 
    FROM orders_books 
    INNER JOIN books ON orders_books.id_book = books.id
    INNER JOIN orders ON orders_books.id_order=orders.id

    WHERE date >='2019-03-1' AND date <= '2019-03-31'
    group by orders.id