Как объединить данные из двух таблиц в одном вызове базы данных в одни и те же столбцы? - PullRequest
0 голосов
/ 16 марта 2009

Если я выполню два оператора в пакетном режиме, они вернут одну таблицу двум в мой объект sqlcommand с объединенными данными. То, что я пытаюсь сделать, это оптимизировать поиск, выполняя поиск дважды: первый раз по одному набору данных, а затем второй по другому. Они имеют одинаковые поля, и я хотел бы, чтобы все записи из обеих таблиц отображались и добавлялись друг к другу. Мне нужно это, чтобы я мог отсортировать данные между обоими наборами данных, но, если не написать хранимую процедуру, я не могу придумать, как это сделать.

Например. Таблица 1 имеет столбцы A и B, таблица 2 имеет те же столбцы, но разные источники данных. Затем я хочу объединить их так, чтобы, если a существует только в одном столбце, оно добавлялось к результирующему набору, а если оба существовали в таблицах, столбец B суммировался между ними.

Обратите внимание, что это не то же самое, что полная операция внешнего соединения, поскольку она не объединяет данные.

[EDIT]

Вот как выглядит код:

Select * From
 (Select ID,COUNT(*) AS Count From [Table1]) as T1
     full outer join
 (Select ID,COUNT(*) AS Count From [Table2]) as T2
     on t1.ID = T2.ID

Ответы [ 5 ]

2 голосов
/ 16 марта 2009

Возможно, вы ищете UNION?

IE:

SELECT A, B FROM Table1
UNION
SELECT A, B FROM Table2
1 голос
/ 16 марта 2009

Возможно:

select table1.a, table1.b
from table1
where table1.a not in (select a from table2)
union all
select table1.a, table1.b+table2.b as b
from table1
inner join table2 on table1.a = table2.a

edit: возможно, вам будет полезно объединить таблицы до подсчета. например,

select id, count() as count from
(select id from table1
 union all
 select id from table2)
0 голосов
/ 16 марта 2009

Я думаю, что вы ищете это, но я не уверен, что правильно понимаю ваш язык.

select id, sum(count) as count
from (
    select id, count() as count
    from table1
    union all
    select id, count() as count
    from table2
) a
group by id
0 голосов
/ 16 марта 2009

Чтобы сделать это, вы должны пойти:

SELECT * INTO TABLE3 FROM TABLE1
UNION
SELECT * FROM TABLE2

При условии, что обе таблицы имеют одинаковые столбцы

0 голосов
/ 16 марта 2009

Я не уверен, что полностью понимаю, но вы, кажется, спрашиваете о СОЮЗЕ

SELECT A,B
FROM tableX
UNION ALL
SELECT A,B
FROM tableY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...