2014-02-13 7 views
0

Привет Я разрабатываю приложение в базе данных VS 2010, C# и SQLCe.Ошибка Inner Join Query

Я составляю отчет из 3 таблиц, соответственно доходов, расходов и транзакций.

структура таблицы, как показано ниже:

Доход:

Income

засчёт:

expence

Сделки:

trans

Для этого я написал запрос

select t.tDate as [Date], t.tDescription as [Detail],e.eAmount as [Debit], 
i.iAmount as [Credit], t.balance as [Balance] 
from Transactions t 
    inner join Expence e on t.pid=e.pid 
    join Income i on t.pid=i.pid 
where t.pid='11' 

Но когда я запускаю этот запрос, я просто получаю

result

Я хочу, чтобы мой результат должен быть как банковский счет, как показано ниже. final

В соответствии с моим пониманием запрос неверен.

Как мы можем написать запрос, чтобы получить такой результат?

ответ

0

Вы должны использовать left join, а не использовать Join. Потому что left возвращает все случаи в таблице from, а случай существует в таблице. Расход e Доход.

select t.tDate as [Date], t.tDescription as [Detail],e.eAmount as [Debit], 
    i.iAmount as [Credit], t.balance as [Balance] 
from Transactions t 
    left join Expence e on t.pid=e.pid 
    left join Income i on t.pid=i.pid 
where t.pid='11' 
0

Если бы я получил это право присоединиться элементы из засчёт таблицы с элементами из таблицы сделок вы должны использовать Pid и Ид и присоединиться элементы из дохода вы должны использовать Pid и IID, так что ваш выбор будет выглядеть примерно так :

select t.tDate as [Date], t.tDescription as [Detail],e.eAmount as [Debit], 
i.iAmount as [Credit], t.balance as [Balance] 
from Transactions t 
    inner join Expence e on t.pid=e.pid and t.eId = e.eId 
    join Income i on t.pid=i.pid and t.iId = i.iId 
where t.pid='11'