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

Откуда:
Сообщений: 200
как можно объединить 2 подзапроса по 4 столбца чтоб результат выводился в виде 8 столбцов
select d.date, d.doc, d.sum, j.dat1
from docum d inner join journal j on d.id=j.id
where d.acc1=1
второй запрос
select d.date, d.doc, d.sum, j.dat1
from docum d inner join journal j on d.id=j.id
where d.acc2=1
должна получиться табличка
date doc sum dat1 date doc sum dat1
ключей нет для объединения.
12 окт 09, 11:11    [7771933]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
если ключей нет, то как объеденять-то?! по какому принципу?!
12 окт 09, 11:12    [7771945]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Glory
Member

Откуда:
Сообщений: 104760
Через PIVOT или CASE с GROUP BY
12 окт 09, 11:13    [7771954]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
просто вывести все данные.
12 окт 09, 11:14    [7771958]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Рострига Артур
просто вывести все данные.


cross join?
12 окт 09, 11:14    [7771964]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Рострига Артур
как можно объединить...

что вы подразумеваете под "объединить"?
12 окт 09, 11:15    [7771965]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31168
Рострига Артур
просто вывести все данные.
версию скажите
12 окт 09, 11:15    [7771966]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Автор, выполните, пожалуйста, пункты 6 и 4 Рекомендаций по оформлению сообщений в форуме
12 окт 09, 11:16    [7771974]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
ну например в результате первого запроса будут записи
d.date, d.doc, d.sum, j.dat1
1.01.2009,23,200,2.01.2009
1.01.2009,24,220,3.01.2009
1.01.2009,25,270,6.01.2009
2.01.2009,26,260,8.01.2009
2.01.2009,27,280,5.01.2009
2.01.2009,28,240,8.01.2009

а в результате второго
d.date, d.doc, d.sum, j.dat1
1.01.2009,203,290,2.01.2009
1.01.2009,204,290,3.01.2009
1.01.2009,205,290,6.01.2009
2.01.2009,206,270,8.01.2009
2.01.2009,207,240,5.01.2009
2.01.2009,208,260,8.01.2009
а в итого должно получиться

1.01.2009,23,200,2.01.2009 1.01.2009,203,290,2.01.2009
1.01.2009,24,220,3.01.2009 1.01.2009,204,290,3.01.2009
1.01.2009,25,270,6.01.2009 1.01.2009,205,290,6.01.2009
2.01.2009,26,260,8.01.2009 2.01.2009,206,270,8.01.2009
2.01.2009,27,280,5.01.2009 2.01.2009,207,240,5.01.2009
2.01.2009,28,240,8.01.2009 2.01.2009,208,260,8.01.2009
что-то типа этого
12 окт 09, 11:19    [7771999]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
SQL Server 2005 eng sp2
12 окт 09, 11:20    [7772005]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Рострига Артур
ну например в результате первого запроса будут записи
d.date, d.doc, d.sum, j.dat1
1.01.2009,23,200,2.01.2009
1.01.2009,24,220,3.01.2009
1.01.2009,25,270,6.01.2009
2.01.2009,26,260,8.01.2009
2.01.2009,27,280,5.01.2009
2.01.2009,28,240,8.01.2009

а в результате второго
d.date, d.doc, d.sum, j.dat1
1.01.2009,203,290,2.01.2009
1.01.2009,204,290,3.01.2009
1.01.2009,205,290,6.01.2009
2.01.2009,206,270,8.01.2009
2.01.2009,207,240,5.01.2009
2.01.2009,208,260,8.01.2009
а в итого должно получиться

1.01.2009,23,200,2.01.2009 1.01.2009,203,290,2.01.2009
1.01.2009,24,220,3.01.2009 1.01.2009,204,290,3.01.2009
1.01.2009,25,270,6.01.2009 1.01.2009,205,290,6.01.2009
2.01.2009,26,260,8.01.2009 2.01.2009,206,270,8.01.2009
2.01.2009,27,280,5.01.2009 2.01.2009,207,240,5.01.2009
2.01.2009,28,240,8.01.2009 2.01.2009,208,260,8.01.2009
что-то типа этого

вы хотите получить это из результатов ваших подзапросов или вам нужен скрипт заменяющий ваши подзапросы?
12 окт 09, 11:24    [7772037]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Рострига Артур
ну например в результате первого запроса будут записи
d.date, d.doc, d.sum, j.dat1
1.01.2009,23,200,2.01.2009
1.01.2009,24,220,3.01.2009
1.01.2009,25,270,6.01.2009
2.01.2009,26,260,8.01.2009
2.01.2009,27,280,5.01.2009
2.01.2009,28,240,8.01.2009

а в результате второго
d.date, d.doc, d.sum, j.dat1
1.01.2009,203,290,2.01.2009
1.01.2009,204,290,3.01.2009
1.01.2009,205,290,6.01.2009
2.01.2009,206,270,8.01.2009
2.01.2009,207,240,5.01.2009
2.01.2009,208,260,8.01.2009
а в итого должно получиться

1.01.2009,23,200,2.01.2009 1.01.2009,203,290,2.01.2009
1.01.2009,24,220,3.01.2009 1.01.2009,204,290,3.01.2009
1.01.2009,25,270,6.01.2009 1.01.2009,205,290,6.01.2009
2.01.2009,26,260,8.01.2009 2.01.2009,206,270,8.01.2009
2.01.2009,27,280,5.01.2009 2.01.2009,207,240,5.01.2009
2.01.2009,28,240,8.01.2009 2.01.2009,208,260,8.01.2009
что-то типа этого


принцип объеденения какой всё-таки!? почему не

1.01.2009,23,200,2.01.2009 2.01.2009,206,270,8.01.2009
1.01.2009,24,220,3.01.2009 2.01.2009,207,240,5.01.2009
1.01.2009,25,270,6.01.2009 2.01.2009,208,260,8.01.2009
2.01.2009,26,260,8.01.2009 1.01.2009,203,290,2.01.2009
2.01.2009,27,280,5.01.2009 1.01.2009,204,290,3.01.2009
2.01.2009,28,240,8.01.2009 1.01.2009,205,290,6.01.2009


?
12 окт 09, 11:24    [7772042]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
нужен скрипт, который формировал бы эти подзапросы.
принципа нет, потому что это форма такую придумали наше любимое правительство, в которой выводиться журнал документов, первая половина приходных, вторая расходных. между собой они не связаны никак...но должны как то выводиться на одной строке.
12 окт 09, 11:28    [7772072]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
Рострига Артур
нужен скрипт, который формировал бы эти подзапросы.

нужен скрипт, который формировал бы эти результаты.
12 окт 09, 11:29    [7772085]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Добрый Э - Эх
Guest
row_number() over() в каждом подзапросе с дальнейшим FULL JOIN по полученному полю.
12 окт 09, 11:30    [7772091]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Лично я угледел такую связь (может оно и есть):

select * from
(
select d.date, d.doc, d.sum, j.dat1
from docum d inner join journal j on d.id=j.id
where d.acc1=1
) t1
inner join
(
select d.date, d.doc, d.sum, j.dat1
from docum d inner join journal j on d.id=j.id
where d.acc2=1
) t2
on t1.date=t2.date and t1.dat1=t2.dat1

если оперировать вашими приведёнными тут данными, то результат будет нужный вам
12 окт 09, 11:31    [7772108]     Ответить | Цитировать Сообщить модератору
 Re: объединение таблиц  [new]
Рострига Артур
Member

Откуда:
Сообщений: 200
нет, даты не повторяются.
может быть 01.01.2009 а потом 02.01.2009
а во втором запросе вылезет 02.01.2009
сделал на
row_number() over() 
то что надо
12 окт 09, 11:36    [7772148]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить