2013-04-03 46 views
15

Can HQL Başka bir sorgunun sonuç kümesinde seçim yapabilir misiniz? Örneğin
:Can HQL Başka bir sorgunun sonuç kümesinde seçim yapabilir misiniz?

SELECT COUNT(*) FROM (SELECT * FROM Table) 


SQL'de bunu ancak ben HQL yukarıdaki gibi denedik ama sadece bana sözdizimi hatası gösterdiklerinde "beklenmedik belirteci: (satır 1, sütun 22 yakın ..."

+0

ifade etmek katılmak kullanılan bir ölçüt eşdeğer var mı sen –

cevap

11

HQL destek subqueries Ancak bunlar yalnızca belirli veya sağladığınız örnek en iyi HQL bir düz ifadesi olarak yazdığı olacağını nerede fıkra Örneğin oluşabilir gelmez.:.

select count(*) from table t (where table is the entity name) 

ise sorgu, (select * from Table)'dan daha karmaşık bir ifadeyi içerir, bu mantığı bir görünüme koymanızı ve sonra bu görünümden yola çıkarak bir varlık oluşturmanızı öneririm.

Alt-alanları destekleyen veritabanları için Hazırda Bekletme, sorgularda alt sorgularını destekler. Bir alt sorgu parantez içine alınmalıdır (genellikle bir SQL toplama işlev çağrısı ile). Hatta ilişkili alt sorgular (dış sorgudaki bir takma adı veren alt sorgular) izin verilir.

Örnek

from DomesticCat as cat 
where cat.name not in (
    select name.nickName from Name as name 
) 
+0

kullanılan kesin çözüm önerin? –

0

alt sorgu kullanarak mümkün değildir . Tek yönlü belirgin bir bu tarafa kullanıyor:

SELECT COUNT(DISTINCT t.id) FROM table t INNER JOIN t.list l 
    WHERE t.status = 'ST1' AND l.status = 'ST2'" 

Ben iç ben aynı sorun var seçkin tekrarını

İlgili konular