Попытка сгенерировать следующий SQL из Linq-To-Sql
SELECT
parenttableA.Name AS parentA,
childtableA.Name AS childA,
parenttableB.Name AS parentB,
childtableB.Name AS childB
FROM parenttableA
INNER JOIN childtableA ON childtableA.parentid = parenttableA.id
LEFT OUTER JOIN
(
parenttableB
INNER JOIN childtableB ON childtableB.parentid = parenttableB.id
)
ON parenttableB.townid = parenttableA.townid
WHERE parenttableA.townid = 123
Этот SQL должен возвращать что-то вроде:
parentA childA parentB childB
======= ====== ======= ======
John Dave Paul Mark
Jim John (null) (null)
Итак, другими словами:
Как я могу иметь 2 отдельных внутренних соединения, связанных вместе с ЛЕВЫМ ВНЕШНИМ СОЕДИНЕНИЕМ, чтобы я все еще получал записи "A" из города 123, даже если для этого города не существует записей "B"?