Что такое HQL-эквивалент следующего SQL? - PullRequest
0 голосов
/ 22 ноября 2011

Ниже SQL-код работает правильно на SQL-сервере 2008.

SELECT ITEM_NO 
FROM 
    PROPERTY_VALUES
WHERE
    (PROPERTY_NAME ='Fax' AND  PROPERTY_VALUE = '123-123-123')

INTERSECT

SELECT ITEM_NO 
FROM 
    PROPERTY_VALUES
WHERE
    (PROPERTY_NAME ='Email' AND  PROPERTY_VALUE = 'testemail@gmail.com')

INTERSECT

SELECT ITEM_NO 
FROM 
    PROPERTY_VALUES
WHERE
    (PROPERTY_NAME ='Mobile' AND  PROPERTY_VALUE = '9844808631')

1 Ответ

2 голосов
/ 22 ноября 2011

Перепишите SQL следующим образом, и HQL должен быть очевидным:

SELECT ITEM_NO 
FROM 
    PROPERTY_VALUES a, PROPERTY_VALUES b, PROPERTY_VALUES c
WHERE
    (a.PROPERTY_NAME ='Fax' AND  a.PROPERTY_VALUE = '123-123-123')
   AND
    (b.PROPERTY_NAME ='Email' AND  b.PROPERTY_VALUE = 'testemail@gmail.com')
   AND
    (c.PROPERTY_NAME ='Mobile' AND  c.PROPERTY_VALUE = '9844808631')
   AND
    (a.ITEM_NO = b.ITEM_NO AND a.ITEM_NO = c.ITEM_NO)
...