Я хочу заменить «левое внешнее соединение» альтернативным базовым запросом, как я могу это сделать? - PullRequest
0 голосов
/ 19 июля 2010

Запрос выглядит так:

Select t1.*, t2.balance from t1 left outer join t2 on (t1.id1 = t2.id1 and t1.id2 = t2.id2)
where t1.name = 'name';

Я работал хорошо, пока не использовал собственные запросы, но теперь мне нужно использовать реализацию JPA Hibernate для всех запросов. Задействованная таблица никак не связана.

Вот почему я хочу использовать альтернативный фундаментальный запрос, эквивалентный левому внешнему соединению.

Спасибо, Махеш

1 Ответ

0 голосов
/ 19 июля 2010

Мое единственное предложение - объединить результаты двух запросов: внутреннее соединение, а затем строки из t1 без совпадения в t2, что-то вроде:

Select t1.*, t2.balance from t1, t2 where t1.name = 'name' and t1.id1 = t2.id1 and t1.id2 = t2.id2
UNION
Select t1.*, null where t1.name = 'name' and (t1.id1,t1.id2) not in (select id1, id2 from t2)
;

Я не знаком с Hibernateи поэтому не знаю, если это дает вам ту же проблему.Я полагаю, что в худшем случае, если вы действительно можете выполнять только базовые запросы, может потребоваться два независимых запроса и объединение результатов в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...