Я хотел бы получить некоторые данные из 2 разных таблиц. Их называют «А» и «В».
Существует также еще одна таблица под названием «C».
И A, и B имеют ссылку на «C», но «C» НЕ имеет ссылки ни на A, ни на B.
Моя команда SQL будет выглядеть примерно так:
select
A.x,
A.y,
B.z
from
A
LEFT OUTER JOIN C ON C.i = A.i
LEFT OUTER JOIN B ON B.i = C.i
Дело в том, что у меня есть некоторые данные, которые мне нужны в таблице A, и некоторые данные в таблице B.
Мне нужно извлечь все данные из таблицы A, где свойство из таблицы A равно свойству таблицы B, и, следовательно, некоторые данные из таблицы B.
Это просто, действительно простая команда HQl (проще с LINQ):
select a.x, a.y, b.z
from A as a, B as b
where a.x = b.x
Но проблема в том, что мне также нужно получить данные из A, когда a.x имеет значение NULL. Я бы, конечно, получил нулевое значение от b.x
Я пытался использовать DefaultIfEmpty () в LINQ, но поскольку я использую session.Query () над сущностью, DefaultIfEmpty еще не реализован в NH 3.
Как мне написать это на HQL?