私は今、頭を壁にぶつけている。通常、私はFROM句のサブクエリでこの問題を解決しますが、これはHQLでは許可されていません。 私は簡単な例を作りました。あなたが私を助けてくれることを願っています。最も高価なアイテムを選択するにはどうすればいいですか? Hibernate HQLの棚
CREATE TABLE PUBLIC.SHELF
(id INTEGER NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE PUBLIC.ITEM
(id INTEGER NOT NULL,
price INTEGER NOT NULL,
description VARCHAR(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE PUBLIC.SHELF_ITEMS
(shelf_id INTEGER NOT NULL,
item_id INTEGER NOT NULL,
PRIMARY KEY (shelf_id, item_id)
);
そして、これから私は最も高価なアイテムのPRを選択します:
は私がDET以下の表を持って考えます。棚。 私は、次の文を照会することにより、それを達成することができます
SELECT
shelf.id,
MAX(item.price)
FROM
PUBLIC.SHELF as shelf
INNER JOIN PUBLIC.SHELF_ITEMS as shelfitems ON shelf.id = shelfitems.shelf_id
INNER JOIN PUBLIC.ITEM as item ON item.id = shelfitems.item_id
GROUP BY shelf.id;
しかしONEより多くの要件があります! - アイテムIDと説明が同じ結果セットにも必要です。 は、だから私はこのような何かをしたい:
SELECT
shelf.id,
item.id,
item.description,
MAX(item.price)
FROM
PUBLIC.SHELF as shelf
INNER JOIN PUBLIC.SHELF_ITEMS as shelfitems ON shelf.id = shelfitems.shelf_id
INNER JOIN PUBLIC.ITEM as item ON item.id = shelfitems.item_id
GROUP BY shelf.id;
しかし、私はすべての行を取得することを追加するとき、私はGROUP BY句でitem.idを追加する必要があり、というエラーで、このresultat。
私は、最も高価なものだけを選択してほしいと言っている状態がありません。
Works!どうもありがとう! – user1819127
ようこそ:)既に気づいたことがあるように、棚に最高価格と同じ価格の複数の品目がある場合、各品目ごとに1つずつ、棚当たり複数の行が表示されます。 –
それは本当です!通知ありがとう! – user1819127