2013-03-22 2 views
1

У меня есть две таблицы: sales и productsJPA: Присоединяйтесь к группе по сумме. MySQL запрос

[Products] 
+-------+-------------------+ 
| id | name    | 
+-------+-------------------+ 
| 1  | product number 1 | 
| 2  | product number 2 | 
| 3  | product number 3 | 
+-------+-------------------+ 

[Sales] 
+-------+------------+------+ 
| id | product_id | qty | 
+-------+------------+------+ 
| 1  | 2   | 100 | 
| 2  | 2   | 35 | 
| 3  | 1   | 1 | 
+-------+-------------------+ 

, которые я хотел, чтобы показать что-то подобное с JavaEE и JPA:

Most selled products : 
+------------------+------------+ 
| Product name  | Quantity | 
+------------------+------------+ 
| product number 2 | 135  | 
| product number 1 | 1   | 
+------------------+------------+ 

Я столкнулся с двумя проблемами:

  • Я знаю только, как извлекать объекты, поэтому я мог отображать имя продукта, но не количество проданных, так как это вычисленное значение.
  • Я не знаю, как запросить мою базу данных, чтобы получить правильную информацию

Это то, что я пробовал:

public List<Product> getMostSelledProducts() { 
    Query q = em.createQuery("SELECT p FROM Sale s RIGHT JOIN Product p GROUP BY s.productId ORDER BY COUNT(s.productId)"); 
    return q.getResultList(); 
} 

Как мне сделать такую ​​вещь?

ответ

1

Не уверен, что это сработает, не проверил его, но может установить вас по правильному пути, если он не работает.

SELECT p.name, SUM(s.qty) as Quantity FROM Sales s 
INNER JOIN Product p ON s.product_id = p.id 
GROUP BY s.product_id 
ORDER BY Quantity DESC 
+0

Спасибо :) Но тогда, какой должен быть тип ответа? Я не могу вернуть продукт, так как я потерял бы информацию о количестве ... – mimipc

+0

Не могли бы вы вернуть только список вместо списка ? – spullen

Смежные вопросы