Mam kwerendy, która wygląda mniej więcej tak:Korzystanie z DISTINCT powoduje ten błąd: nie wybrany wyraz
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
co skutkuje następującym wyjątkiem:
Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression
jeśli usunąć Słowo kluczowe DISTINCT, zapytanie działa bez problemu. Jeśli usunę klauzulę order by query uruchomi się bez problemu. Niestety, nie mogę uzyskać uporządkowanego zestawu wyników bez duplikatów.
Dzięki @Lamak za odpowiedź. Nie jest dla mnie jasne, dlaczego DISTINCT powoduje, że db ignoruje pozostałe kolumny, ponieważ nie ignoruje ich bez DISTINCT. Jednak, biorąc pod uwagę, że to ma znaczenie, w jaki sposób uzyskać uporządkowany, zduplikowany zestaw wyników? – Ken
, a następnie w jaki sposób chcesz je zamówić? Jeśli chcesz powielić bezpłatne wyniki dla kolumny 'share.rooms', to musisz zrozumieć, że ponieważ ten sam pokój ** może ** mieć różne wartości dla' floorOrder' lub 'roomNumber' lub dowolnej innej kolumny, jak chcesz je zamówić ?, przez minimalną wartość tych ?, max ?. – Lamak
Widzę teraz. Dzięki jeszcze raz. – Ken