Ho una domanda che sembra qualcosa di simile:Utilizzando la parola chiave DISTINCT causa questo errore: non è un'espressione selezionata
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
che si traduce nella seguente eccezione:
Caused by: org.hibernate.exception.SQLGrammarException: ORA-01791: not a SELECTed expression
Se rimuovo il Parola chiave DISTINCT, la query viene eseguita senza problemi. Se rimuovo la clausola order by, la query viene eseguita senza problemi. Sfortunatamente, non riesco a ottenere il risultato ordinato senza duplicati.
Grazie a @Lamak per la risposta. Non mi è chiaro perché DISTINCT induca il db a ignorare le altre colonne, in quanto non le ignora senza il DISTINCT. Tuttavia, dato che è importante, come ottengo il set di risultati liberi ordinato e duplicato? – Ken
allora come vuoi che siano ordinati ?. Se vuoi risultati duplicati gratuiti per la colonna 'share.rooms', devi capire che dal momento che la stessa stanza ** potrebbe ** avere valori diversi per' floorOrder' o 'roomNumber' o qualsiasi altra colonna, come vuoi da ordinare ?, dal valore minimo di quelli ?, il massimo ?. – Lamak
Vedo ora. Grazie ancora. – Ken