2009-07-17 12 views
0

私はOrderSectionのセットを含むOrderSectionのセットを含むOrderを持っています。 SQLで結合のHQLサブクエリー

次のクエリに行われるよう、一つはJOIN句でSELECTステートメントを使用することができます。

SELECT 
    o.id, 
    o.amount, 
    sum(s.quantity*s.price), 
    sum(s.quantity*i.price) 
FROM 
    orders AS o 
    JOIN ordersections AS s ON s.order_id=o.id 
    JOIN (SELECT section_id, sum(quantity*price) AS price FROM orderitems GROUP BY section_id) AS i ON i.section_id=s.id 
GROUP BY o.id, o.amount 

HQLで、このようなクエリを表現することは可能でしょうか?私は何かが欠けていない限り

答えて

2

は、あなたのクエリがようSQLに書き換えることができます:私は行方不明です場合

SELECT 
    o.id, 
    o.amount, 
    sum(s.quantity*s.price), 
    sum(s.quantity*i.quantity*i.price) 
FROM orders AS o 
    JOIN o.sections AS s 
    JOIN s.items AS i 
GROUP BY o.id, o.amount 

:それは、次にようHQLに書き換えることができ、その場合には

SELECT 
    o.id, 
    o.amount, 
    sum(s.quantity*s.price), 
    sum(s.quantity*i.quantity*i.price) 
FROM orders AS o 
    JOIN ordersections AS s ON s.order_id=o.id 
    JOIN orderitems AS i ON i.section_id=s.id 
GROUP BY o.id, o.amount 

何かと上記のクエリは、あなたが欲しいものを返すことはありません、Subqueries in HQL can only occur in SELECT or WHERE clausesので、あなたはHQL変換で幸運です。ただし、クエリを<sql-query>としてマップすることはできますが、最後に違いはありません。

+0

3番目の列は項目に依存せず、各セクションに項目がある回数だけ繰り返されるため、同じ結果は得られません。 カウント(*)で分けてやってみてください。だから助けてくれてありがとう。 –

関連する問題