kullanarak katılmak yazılamıyor. TEACHERS
tablo null SCHOOL_ID
sütunu vardır (bir öğretmen veya bir okula ait olabilir veya) ve SCHOOLS
tablo null DISTRICT_ID
sütunu (bir okul veya bir bölgeye ait olabilir veya) sahiptir. Esqueleto kullanmaçift sol Ben öğretmenler, okullar ve ilçeleri ile bir veri tabanı şeması var esqueleto
, ben öğretmen listesini istiyorum, bir okul (onlar birine ait ise) ve bir bölge (bir bölgeye ait bir okula ait ise) ile her. Okul katılmak sol> sadece öğretmen için doğru ifadeyi anlamaya biraz zaman aldı, ama sonunda doğru var: Ben tekrar sola ekleyerek çalıştı
select $
from $ \(teacher `LeftOuterJoin` school) -> do
on (teacher ^. TeacherSchoolId ==. school ?. SchoolId)
return (teacher, school)
benzer bir ifade kullanarak DISTRICTS
üzerinden birleştirmek:
select $
from $ \(teacher `LeftOuterJoin` school `LeftOuterJoin` district) -> do
on (school ^. SchoolDistrictId ==. district ?. DistrictId)
on (teacher ^. TeacherSchoolId ==. school ?. SchoolId)
return (teacher, school, district)
Ama bir hata alıyorum:
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’
bu çifte esqueleto kullanılarak
ifade edilecek katılabilir? Öyleyse nasıl?
Bu kitaplığı bilmiyorum ve her şey karmaşık görünüyor, ancak bazı şeyleri SQL ile eşleştirmek için bazı 'Belki' öğelerini kaldırmanız gerekiyor gibi görünüyor. Ya da başka bir şekilde 'yuvarlak. Bilmiyorum. – dfeuer