2012-07-23 197 views
0

我正在處理左連接查詢,我沒有收回我的預期結果。我一遍又一遍地搜索,一直未能找到造成這個問題的原因。當我執行下面的代碼時,它會返回一個左內部聯接的結果(只有左側的記錄與右側的項匹配)。我試圖指定LEFT OUTER沒有成功。我錯過了簡單的東西嗎?coldfusion左連接沒有返回預期結果

var records = ORMExecuteQuery("SELECT new map(inst.id AS installationId, 
               inst AS installation, 
               uaa.id AS id, 
               uaa.permission AS permission, 
               uaa.app AS app) 
              FROM Installation AS inst, 
               LEFT JOIN inst.userApplicationAccesses AS uaa 
                WITH uaa.user.userId = ?", [Arguments.userId]); 
+0

我假設你的左內連接只是一個內連接。 – Limey 2012-07-23 18:13:15

+0

是的,對不起。一直試圖找出它的最後一天半,所以「左」現在嵌入我的大腦 – user1546573 2012-07-23 18:14:54

+0

呵呵,看起來像它確實存在,只是似乎並不想要使用,雖然。 http://stackoverflow.com/questions/2389204/left-inner-join-vs-left-outer-join-why-does-the-outer-take-longer – Limey 2012-07-23 18:17:13

回答

0

確定您的左連接是非常奇怪的。您將被加入到列中,而不是表格,並且該列是您的第一個表格的一部分(您甚至將其稱爲名稱)。

你外連接應該是這個樣子:

Select * 
From Table_A as A 
Left Outer Join Table_B as B on B.ID = A.ID 

,是的,這兩個表-A和表-B可以是同一個表,但表應當兩次列出來。

+0

做一個簡單的選擇所有不會工作。我需要將它們映射到特定的屬性。 HQL也沒有「on」語句。 – user1546573 2012-07-23 18:30:22

+0

我不指望你做出全部選擇(如果你這樣做,我會大聲嚷嚷)它只是幫助顯示外部連接查詢的正確完整語法 – Limey 2012-07-23 18:31:45

+0

我得到了正確的SQL語法來完成我所需要的,但在遇到問題時轉換,爲HQL IM'選擇Installation.id AS installationId, \t userApplicationAccess.id爲ID, \t userApplicationAccess.permission AS許可, \t userApplicationAccess.appId AS應用 從安裝 \t LEFT JOIN userApplicationAccess \t \t ON userApplicationAccess.installationId = Installation.id \t \t and userApplicationAccess.userId = 191 order by installationId' – user1546573 2012-07-23 18:36:02