1

私は2つのテーブルを持っています:salesそしてproducts

[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          |
+------------------+------------+

私は2つの問題に直面しています:

  • 私はオブジェクトを取得する方法しか知らないので、製品名は表示できましたが、販売数量は計算値であるため表示できませんでした。
  • データベースにクエリを実行して正しい情報を取得する方法がわからない

これは私が試したことです:

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();
}

そんなことどうしたらいいの?

4

1 に答える 1

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
于 2013-03-22T17:02:47.100 に答える