2012-01-05 3 views
2

Скажем, у меня есть две таблицы: А имеет внешний ключ в B B имеет столбец с именем «Name»HQL различное поведение для нулевой внешней ключ

Мне нужно, чтобы получить результаты для каждой строки в этом возвращении Имя из B, если внешний ключ не равен NULL, но null, если внешний ключ имеет значение null. Я использую NHibernate и хотел бы увеличить этот HQL-запрос с таким поведением.

Спасибо.

таблица может выглядеть следующим образом:

A 
------ 
| ID | 
------ 
| 1 | 
| 2 | 
------ 

B 
-------------------- 
| ID | A_id | Name | 
-------------------- 
| 1 | 2 | Ben | 
-------------------- 

Results 
--------------- 
| A_id | Name | 
--------------- 
| 1 | NULL | 
| 2 | Ben | 
--------------- 
+0

В необработанном SQL, это было бы что-то вроде: ' выберите B.name из левого внешнего соединения B на A.id = B.A_id' – cdeszaq

+0

Проблема в том, что мне нужна строка в результатах, где нет B, который имеет B.A_id, который соответствует A.id –

+0

Какие? Добавьте к своему вопросу ASCii-art (или некоторую другую) картинку, которая отображает таблицу A, таблицу B (с данными) и итоговую таблицу с желаемыми результатами. Это позволит понять, что вы на самом деле после этого. – cdeszaq

ответ

0
select a.ID as A_id, b.Name as Name from A a left outer join a.Bs b 

примечание: см псевдонима для и ассоциации с ее Bs

+0

Я вижу, проблема, с которой я столкнулся, заключалась в том, что я пытался сделать что-то большее: «выберите a.ID, aBName из A a». Это не работает, если a.B является нулевым. –

Смежные вопросы