2014-12-07 5 views
0

я борюсь, чтобы получить правильный запрос: Есть две таблицы: articles и ordersСортировка MySQL запросов на основе SUM

Я хочу, чтобы получить список из всех статей, но отсортированы по времени они были заказаны. (Не только, сколько раз элемент был заказан, и в том числе количество)

orders: id, article_id, amount

articles: id, description

Пример:

articles

1, apple 
2, orange 
3, lime 

orders

1, 1, 5 
2, 3, 1 
3, 3, 2 
4, 2, 1 

Вывод должен быть:

1, apple, 5 
3, lime, 3 
2, orange, 1 
+0

Это основной '' join' и группа by' запроса. Единственная тонкость, которую я легко вижу, это то, что 'key' является зарезервированным словом, поэтому это действительно плохой выбор для имени столбца. –

ответ

1

Это основной join и group by запрос, два основы языка SQL. Вы должны изучить язык, если хотите эффективно использовать базы данных.

select a.`key`, count(o.id) as cnt, sum(amount) 
from articles a left join 
    orders o 
    on o.article_key = a.`key` 
group by a.`key` 
order by cnt desc; 
+0

Большое спасибо! Это уже давно, так как я использовал базы данных в последний раз ... – heysamhey

0
select a.key, a.description, sum(amount) as sum_amount 
from articles a 
left join orders o on o.article_key = a.key 
group by a.key, a.description 
order by sum_amount desc 
Смежные вопросы