2013-03-07 34 views
40

Ben şuna benzer bir sorgu var:bu hataya neden: değil seçilmiş ifadesini

aşağıdaki istisna ile sonuçlanır
SELECT DISTINCT share.rooms 
FROM Shares share 
    left join share.rooms.buildingAdditions.buildings.buildingInfoses as bi 
... //where clause omitted 
ORDER BY share.rooms.floors.floorOrder, share.rooms.roomNumber, 
     share.rooms.firstEffectiveAt, share.shareNumber, share.sharePercent 

: Ben kaldırırsanız

Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression 

DISTINCT anahtar sözcüğü, sorgu sorunsuz çalışır. Siparişi yan tümcesine göre kaldırırsam, sorgu sorunsuz çalışır. Maalesef, yinelenen sonuçların ayarlanmış olduğu sonucu elde edemiyorum.

+1

Yanıt için @Lamak teşekkürler. DISTINCT'ın neden DISTINCT olmadan onları göz ardı etmediği için db'nin diğer sütunları görmezden gelmesine neden olduğu açık değildir. Ancak, önemli olduğu düşünüldüğünde, sipariş edilen ücretsiz yinelenen sonuç kümesini nasıl alabilirim? – Ken

+2

o zaman nasıl sipariş edilmesini istersiniz? Eğer 'share.rooms' sütunu için ücretsiz sonuçlar istiyorsanız, aynı oda ** 'nin ** floorOrder' veya 'roomNumber' veya başka bir sütun için farklı değerlere sahip olabileceğini anlamanız gerekir. Bunların sipariş edilmesi için, bunların min değeriyle, maks. – Lamak

+0

Şimdi anlıyorum. Tekrar teşekkürler. – Ken

cevap

65

Sonuçlarınızı hesaplanmamış sütunlarla sipariş etmeye çalışıyorsunuz. DISTINCT burada olmasa da bu sorun olmaz, ancak sorgunuz temelde yalnızca share.rooms sütununda gruplandırıldığı için, bu sonucu aynı share.rooms için birden çok değere sahip olabilecek diğer sütunlarla nasıl ayarlayabiliriz?

İlgili konular