根据常用列条件查找多行

时间:2018-03-19 16:13:29

标签: sql hibernate jpa jpql

我有这样的表格

OrderNo | item | price | customer
-----------------------------------
1      |  itemA  | 10   | customerA

2      |  itemB  | 20   | customerB

3      |  itemC  | 22   | customerC

1      |  itemA  | 10   | customerD

2      |  itemD  | 15   | customerD

4      |  itemB  | 20   | customerB

4      |  itemD  | 15   | customerB

我需要找到给定OrderNo的常见List<Map<item,price>> 我编写了如下的查询。

案例1

Select OrderNo from table tl where item in ('itemB' ,'itemD') and price in ('20','15') GROUP By OrderNo Having count(OrderNo) > 1

评论:工作正常,提供2记录顺序No.2&amp; 4

案例2

Select OrderNo from table tl where item in ('itemB' ,'itemC') and price in ('20','22') GROUP By OrderNo Having count(OrderNo) > 1 

评论:工作正常,提供0条记录

案例3

Select OrderNo from table tl where item in (itemA ,itemB) and price in (10,20) GROUP By OrderNo Having count(OrderNo) > 1 

评论:错误的结果会给出1条记录而不是0.因为itemA和itemB orderNo不同。它给出1,因为有多个itemA记录。但我想要0.因为itemA orderNo!= itemB orderNo

并且我List<Map<item,price>>它可以增长到100.在JPQL / Criteria Builder中实现所有3个案例的最佳方法是什么?

自我加入可以是一种方法,但我不确定如何在JPQL或Criteria Builder中基于self join大小获得动态List<Map<item,price>>

0 个答案:

没有答案