저는 교사, 학교 및 학구가있는 데이터베이스 스키마가 있습니다. TEACHERS
테이블에는 null 가능 SCHOOL_ID
열 (교사가 학교에 소속되거나 소속되지 않을 수도 있음)이 있고 SCHOOLS
테이블에는 null 허용 DISTRICT_ID
열이 있습니다 (학교는 교육구에 소속되어 있거나 소속되어 있지 않을 수도 있음).Esqueleto를 사용하여 이중 왼쪽 조인을 쓸 수 없습니다.
Esqueleto를 사용하여 각 학교 (소속이있는 경우)와 지구 (소속 지역에 속한 학교에 속한 경우)가있는 교사 목록이 필요합니다. 그것은 학교가 참여 왼쪽> 바로 teacher-에 적합한 표현을 알아 내기 위해 잠시 동안을했다,하지만 난 결국 바로 그것을 가지고 : 나는 또 다른 왼쪽을 추가하는 시도
select $
from $ \(teacher `LeftOuterJoin` school) -> do
on (teacher ^. TeacherSchoolId ==. school ?. SchoolId)
return (teacher, school)
는 유사한 표현을 사용 DISTRICTS
에 가입 :
select $
from $ \(teacher `LeftOuterJoin` school `LeftOuterJoin` district) -> do
on (school ^. SchoolDistrictId ==. district ?. DistrictId)
on (teacher ^. TeacherSchoolId ==. school ?. SchoolId)
return (teacher, school, district)
하지만 오류 얻을 :
Couldn't match type ‘Entity School’ with ‘Maybe (Entity School)’
Expected type: SqlExpr (Maybe (Entity School))
Actual type: SqlExpr (Entity School)
In the first argument of ‘(?.)’, namely ‘school’
In the second argument of ‘(==.)’, namely ‘school ?. SchoolId’
이 두 배는 Esqueleto를 사용하여
을 표현할 수 가입 할 수 있습니까? 그렇다면 어떻게?
이 라이브러리는 모릅니다. 모든 것이 복잡해 보이지만, SQL 작업과 동기화하기 위해 '어쩌면'작업을 수행해야하는 것처럼 보입니다. 또는 다른 방법으로 '라운드. 나는 몰라. – dfeuer