2012-07-23 3 views
0

왼쪽 조인 쿼리에서 작업 중이며 예상 한 결과가 반환되지 않습니다. 나는이 문제를 일으키는 원인을 찾을 수 없었습니다. 다음 코드를 실행하면 LEFT INNER JOIN (오른쪽의 항목과 일치하는 왼쪽의 레코드 만) 결과가 반환됩니다. 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

+0

예, 죄송합니다. 마지막 날과 반 동안 그것을 알아 내려고 노력했기 때문에 "왼쪽"이 지금 내 머리 속에 묻혀있다. – user1546573

+0

어쩌면 존재하지 않는 것처럼 보이지만, 당신이 사용하기를 원하는 것 같지 않다. http://stackoverflow.com/questions/2389204/left-inner-join-vs-left-outer-join-why-does-the-outer-take-longer – Limey

답변

0

정상적으로 왼쪽 결합입니다. 당신은 테이블이 아닌 컬럼에 합류하게되고, 그 컬럼은 첫 번째 테이블의 일부입니다 (이름을 참조하는 것조차도).

당신은 외부과 같이 보일 것입니다 가입 :

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

그래, Table_A 및 Table_B 모두가 될 수있는 동일한 테이블을하지만, 그 테이블을 두 번 밖으로 나열되어야합니다.

+0

간단한 선택을하면 모두 작동하지 않을 것입니다. 특정 속성에 매핑해야합니다. 또한 HQL에는 "on"문이 없습니다. – user1546573

+0

나는 당신이 selct를 모두 수행 할 것이라고 기대하지 않는다. (만약 당신이했다면 나는 당신에게 소리를 질렀다.) 그것은 바로 외부 조인 질의의 적절한 전체 구문을 보여주는 것을 돕기위한 것이다. – Limey

+0

필자가 필요로하는 적절한 SQL 구문을 얻었다. 하지만 메신저 HQL에 그 변환 문제를 가진' \t 좌 userApplicationAccess 가입 설치에서 응용 프로그램 AS, installationId AS ID로 \t userApplicationAccess.id 허가 AS \t userApplicationAccess.permission, \t userApplicationAccess.appId을 Installation.id을 선택 \t \t ON userApplicationAccess.installationId = Installation.id \t \t 및 userApplicationAccess.userId = 191 by installationId' – user1546573

관련 문제