Код: Выделить всё
SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17
WHERE p.companyid = 100
Код: Выделить всё
AND f.otherid = 17
EDIT
Почему AND f.otherid = 17 часть условия JOIN, а не в предложении WHERE?
Потому что f может не существовать для некоторых строк, и я все равно хочу, чтобы эти строки были включены. Если условие применяется в предложении WHERE после JOIN, я не получаю желаемого поведения.
К сожалению, это:
Код: Выделить всё
from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in fg.DefaultIfEmpty()
where p.companyid == 100 && fgi.otherid == 17
select f.value
Код: Выделить всё
SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid
WHERE p.companyid = 100 AND f.otherid = 17
Подробнее здесь: https://stackoverflow.com/questions/112 ... conditions