2015-05-06 14 views
5

Tôi có ba trường tạo thành một phím tổng hợp duy nhất trên một bảng.Phím tổng hợp, so sánh

Tôi muốn chuyển qua 3 mảng khác nhau, nơi chỉ mục khớp với.

custIds= [0,1,2] 
custLetters = [A,B,C] 
products = ["Cheese","lemons","Aubergine"] 

là có một câu lệnh SQL sẽ trả lại toàn bộ ba hàng (giả sử họ tồn tại), chỉ kết hợp qua in sẽ không làm việc để do "dương tính giả":

select * from mytable 
where custId in (custIds) 
and custLetters in (custLetters) 
and product in (products); 

cơ sở dữ liệu oracle , nhưng thông qua hqlnate hql, do đó, ansi ưa thích nếu có thể?

+0

Có thể có 'tiêu chí ngủ đông' nếu bạn muốn. –

Trả lời

1

OT: truy vấn SQL của bạn có lẽ là sai. Nó phải là:

select * from mytable 
where (custId, custLetters, product) 
in ((0, 'A', 'Cheese'), 
(1, 'B', 'lemons'), 
(2, 'C', 'Aubergine')); 

Tôi không sử dụng liệu Hibernate có thể tạo truy vấn như vậy hay không. Nhưng in chỉ là một đường cú pháp cho sự kết hợp và sự phân tách.

+0

'Hibernate HQL' giống như truy vấn SQL. –

+1

@AfsunKhammadli nó là tương tự, nhưng có nhiều sự khác biệt. Nó chắc chắn không giống nhau. – NimChimpsky

+0

có bạn là true.Similar :-) –

1

Bạn có thể soạn mảng của bạn vào một duy nhất, sau đó:

custIds= [0,1,2] 
custLetters = [A,B,C] 
products = ["Cheese","lemons","Aubergine"] 

Key=["0ACheese","1Blemons","2CAubergine"] 

select * from mytable 
where custId+custLetters+product in (Key); 
+0

Điều này sẽ hoạt động như thế nào nếu có hồ sơ hiện tại của custid = 1, custletter = A và products = chanh? –

+1

@DanBrauck nó sẽ không, nhưng đó không phải là câu hỏi. Một giải pháp khá hacky, nhưng sẽ hoạt động +1 – NimChimpsky

+0

Không, nó sẽ không hoạt động vì 'custId + custLetters + product' là SQL không hợp lệ. Toán tử ghép nối cho các ký tự là '||' dấu '+' là số. –

Các vấn đề liên quan