вы должны присоединиться к сумме (а не суммировать объединение)
select
a.industry_name
, t1.total_cost
, t2.total_allocation
from dbo.industry_tech_region a
left join (
select dbo.travel_requests.industry_id
, SUM(dbo.travel_requests.travel_cost + dbo.travel_requests.stay_cost + dbo.travel_requests.other_cost) AS total_cost
FROM bo.travel_requests
group by dbo.travel_requests.industry_id
) t1 on a.id = t1.industry_id
left join (
select dbo.industry_allocation.industry_id
, SUM(dbo.industry_allocation.allocation) AS total_allocation
from dbo.industry_allocation
group by dbo.industry_allocation.industry_id
) t2 on a.id = t2.industry_id
это происходит потому, что у вас есть две записи для industry_id 1, а затем строка соединяется два раза, если вы используете подзапрос для aggreated строка, которой это не может произойти ...
Я использовал левое соединение, потому что кажется, что не все industry_id соответствуют 3 таблицам ..
CodeGear предлагает бесплатному ADO.NET 2,0 драйвера для зарегистрированных пользователей InterBase здесь:
http://cc.embarcadero.com/item/25497
Обратите внимание, что "зарегистрированные пользователи InterBase" включает свободный выпуск InterBase 2007 Разработчиков. Загрузка говорит, что это на 2007, но это хорошо работает с InterBase 7, и команда InterBase в CodeGear сказала мне, что у них нет проблемы с людьми, использующими его с этой целью.
Я не рекомендую использовать драйвер, разработанный для Firebird, поскольку InterBase и Firebird имеют несколько различные синтаксисы SQL и отличаются по другим функциям, также. В частности, я думаю, что использование любого драйвера, зависящего от fbclient.dll с InterBase, напрямую опасно.
Я думаю, что поставщик .NET Firebird совпадает с тем, который это находится в моно. Оба - превосходный btw.