2011-06-22 20 views
3

我有一個名爲USERS的表,我從中獲取員工的名和姓,並將其打印爲一個名稱。如何在這些數據上正確使用ORDER BY?在ORACLE ORDER BY連接名稱?

這是我有:

SELECT l.OFFICE_NAME, (us.LAST_NAME || ' , ' || us.FIRST_NAME) AS "Employee Name" 
FROM LOCAL_OFFICE l, USERS us 
WHERE l.LOCAL_OFFICE_ID = us.LOCAL_OFFICE_ID 
ORDER BY l.OFFICE_NAME --what do I place here?-- 

我將通過JOIN,而不是從更昂貴的做到這一點,但我怎麼是按字母順序的名稱的順序?

+1

FROM不比JOIN「更昂貴」。 JOIN現在只是首選,因爲它更清晰,特別是在大型SQL語句中。 –

+0

@Tony Andrews啊。我正在教給我自己,並在某處看到FROM基本上是兩張桌子的笛卡爾積,我知道這些產品可能會非常昂貴。 – null

+1

不,只有在WHERE子句中沒有提供連接條件時,纔是笛卡爾積。 –

回答

8

你可以說:

ORDER BY office_name, "Employee Name" 

,在11G的作品,但也許不是在舊版本的Oracle。

+0

我試過這個,但是我得到一個錯誤:[Error]執行(11:10):ORA-00904:「Employee Name」:無效標識 – null

+1

哦,它適用於我11G,你是什麼版本? –

+0

哦,我在其他地方發現了一個導致它的錯誤。它現在有用,謝謝! – null

6
ORDER BY l.OFFICE_NAME, (us.LAST_NAME || ' , ' || us.FIRST_NAME) 
4

由於您的級聯是不是真的增加任何新的東西,爲什麼不乾脆

ORDER BY l.OFFICE_NAME, us.LAST_NAME, us.FIRST_NAME 

編輯:如果有關於USERS.LAST_NAME和/或USERS.FIRST_NAME指標,這將是比串聯訂購快結果

+0

這個工程,我不知道是否有什麼需要,因爲我引用concat AS「員工姓名」 – null

+0

像這一個更多。給這個指數值得的機會。 – Alfabravo

4

您可以使用:

ORDER BY 1,2

這不是非常好的做法,但它很有效。