Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 left join для двух полей  [new]
Badhabit
Member

Откуда:
Сообщений: 90
Что-то никак не разберусь. Есть
tbl1
dt_acc, kt_acc, sum

tbl2
acc, name

Надо чтобы на выходе было

dt_acc, name, kt_acc, name, sum
123, first acc, 321, second acc, 1000

пишу
select tbl1.dt_acc, tbl2.name, tbl1.dt_acc, tbl2.name, tbl1.sum from tbl1 left join on tbl1.dt_acc = tbl2.acc or tbl1.kt_acc =tbl2.acc


и мне соответственно в оба name пишет одно и тоже, а как сделать чтобы он писал соответствующие имена счетов для acc, а если нет названия счета в tbl2 ставил null
1 ноя 16, 17:45    [19847602]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Badhabit,

вы хотите и дебет и кредит в одном соединении вывести?
1 ноя 16, 17:49    [19847617]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
Badhabit
Member

Откуда:
Сообщений: 90
TaPaK,

ну да, чтобы было походе на проводку:

40702810ХХХ, ООО "Лютик", 43201810ХХХ, Иванов И.И, 1000р

т.е. дебетуют 40702 и кредитуют 43201 на сумму 1000 р (а наименования счетов в tbl2)
1 ноя 16, 17:51    [19847626]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Badhabit,

ключевое слово в "одном соединении"
1 ноя 16, 17:53    [19847636]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
как то так

SELECT [Biils].*, [Debit].Code, [Debit].Name, [Credit].Code, [Credit].Name
FROM Bills
LEFT JOIN Accounts [Debit]
ON [Debit].Id = [Bills].DebitId
LEFT JOIN Accounts [Credit]
ON [Credit].Id = [Bills].CreditId
1 ноя 16, 17:57    [19847663]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
Badhabit
Member

Откуда:
Сообщений: 90
судя по всему в одном не получится? а как можно сделать?
1 ноя 16, 17:58    [19847667]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
Badhabit
Member

Откуда:
Сообщений: 90
TaPaK,

спасибо!
1 ноя 16, 17:59    [19847671]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
Badhabit
Member

Откуда:
Сообщений: 90
TaPaK, что-то не получается
select [operations].data, [dt].dt_account, [dt].TNAME, [kt].kt_account, [kt].TNAME, [operations].sum from operations
left join accounts [dt] on ([dt].dt_account = [accounts].account)
left join accounts [kt] on ([kt].ACCOUNT = [accounts].ACCOUNT)

где я ошибся?
1 ноя 16, 18:28    [19847755]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Badhabit,

в выборе языка программирования :) подумайте и перепишите всё
1 ноя 16, 18:32    [19847771]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
Badhabit,
не добавили operations в условие соединения
1 ноя 16, 18:37    [19847783]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
Badhabit
Member

Откуда:
Сообщений: 90
TaPaK, согласен с sql какте-то затыки постоянные никак у уловлю суть, не могу понять как таблицами "мыслить", вообще жуть... до этого всегда писал на обычных алгоритмических языках никогда проблем с понимаем не возникало, а тут затык прям какой-то...
подскажите хоть куда смотреть...
1 ноя 16, 18:38    [19847784]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Badhabit
TaPaK, согласен с sql какте-то затыки постоянные никак у уловлю суть, не могу понять как таблицами "мыслить", вообще жуть... до этого всегда писал на обычных алгоритмических языках никогда проблем с понимаем не возникало, а тут затык прям какой-то...
подскажите хоть куда смотреть...

я ж дал пример, просто подставьте ваши таблицы и колонки...
1 ноя 16, 18:40    [19847789]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
Badhabit
Member

Откуда:
Сообщений: 90
TaPaK,
не понимаю)))
полей много лишних...)
объясните для дурака
[Debit] и [Credit] это типа виртуальных таблиц? или как правильно называется?

[Debit].Code - это номер счета в левой таблице (tbl1)?
[Debit].Name - это имя для счета в правой таблице (tbl2)?

тогда что это за ID: [Debit].Id = [Bills].DebitId?
1 ноя 16, 18:51    [19847818]     Ответить | Цитировать Сообщить модератору
 Re: left join для двух полей  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Badhabit,

сели и поехали... в пути научимся :)

что-то вроде

select 
[operations].data, 
[dt].dt_account, 
[dt].TNAME, 
[kt].kt_account, 
[kt].TNAME, 
[operations].sum 
from operations
left join accounts [dt] on [dt].acc  = [operations].dt_acc 
left join accounts [kt] on [kt].acc  = [operations].kt_acc 


автор
[Debit] и [Credit] это типа виртуальных таблиц? или как правильно называется?

алиас, кличка :)
1 ноя 16, 18:54    [19847828]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить