Весьма сложный запрос MySQL

136
10 сентября 2019, 20:30

Вообщем поскольку я не особо силён в сложных запросах sql нужна ваша помощь. Есть 3 таблицы выглядят так:

Так и мне из этих таблиц нужно сделать такой запрос: Выведите имена клиентов и количество их заказов, созданных в апреле 2016 года и содержащих один или больше товаров из списка (id: 151515,151617,151514), отсортируйте результат по убыванию суммы заказа.

Я смог сделать такое:

$stmt = $pdo->prepare("SELECT c.name, count(o.id) AS count_order FROM clients c LEFT JOIN orders o ON c.id = o.clients_id 
LEFT JOIN products p ON o.id = p.order_id WHERE o.ctime >= :date1 AND o.ctime <= :date2 AND p.id = :p_id1 OR p.id = :p_id2 OR p.id = :p_id3 GROUP BY c.name");
$stmt->execute(array('date1' => $date1, 'date2' => $date2, 'p_id1' => 151515, 'p_id2' => 151617, 'p_id3' => 151514));
$clients = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $clients[] = $row;
}

Вообщем осталось только ввести сортировку по сумме заказа, как сделать сортировку я знаю, но вычислять сумму?

Answer 1
" select name, count_order from
  (  SELECT distinct c.name
                 , count(o.id) AS count_order
                 , sum(p.price) sumprice 
     FROM clients c 
LEFT JOIN orders o ON c.id = o.clients_id 
LEFT JOIN products p ON o.id = p.order_id 
    WHERE o.ctime >= :date1 AND o.ctime <= :date2 AND (p.id = :p_id1 OR p.id = :p_id2 
       OR p.id = :p_id3) GROUP BY c.name)
order by sumprice"

Если сортировать по сумме заказа

READ ALSO
Как восстановить работу цикла

Как восстановить работу цикла

Подскажите как мне починить цикл? Моя программа работала в консоли, принимала значение и отправляла в бд

133
Вопрос по обработке больших данных в Maria DB

Вопрос по обработке больших данных в Maria DB

Имеется задача обработки и аналитики логовОбъем логов относительно большой: за сутки около 50 миллионов строк, 20 ГБ в таблице СУБД MiriaDB, движок...

118
Дублирование контента на html странице

Дублирование контента на html странице

Есть страница, она является адаптивной, но для ее адаптивности приходится дублировать контент, те

119