Присоединиться к таблицам без критериев присоединения - PullRequest
2 голосов
/ 02 сентября 2010

Это кажется таким простым, но я просто не могу понять это. Я хочу просто объединить 2 таблицы вместе. Мне все равно, какие ценности в сочетании с каким. Используя TSQL, вот пример:

declare @tbl1 table(id int)  
declare @tbl2 table(id int)  

insert @tbl1 values(1)  
insert @tbl1 values(2)  
insert @tbl2 values(3)  
insert @tbl2 values(4)  
insert @tbl2 values(5)  

select * from @tbl1, @tbl2  

Это возвращает 6 строк, но какой запрос будет генерировать это (просто шлепать таблицы рядом):
1 3
2 4
ноль 5

Ответы [ 4 ]

7 голосов
/ 02 сентября 2010

Вы можете присвоить каждой строке номера таблицы, а затем объединить номера строк:

WITH
Table1WithRowNumber as (
    select row_number() over (order by id) as RowNumber, id from Table1
),

Table2WithRowNumber as (
    select row_number() over (order by id) as RowNumber, id from Table2
)

SELECT Table1WithRowNumber.Id, Table2WithRowNumber.Id as Id2
FROM Table1WithRowNumber 
FULL OUTER JOIN Table2WithRowNumber ON Table1WithRowNumber.RowNumber = Table2WithRowNumber.RowNumber

Редактировать : Модифицировано для использования FULL OUTER JOIN, поэтому вы получаете все строки (с нулями).

5 голосов
/ 02 сентября 2010

Использовать перекрестное соединение

  Select * From tableA Cross Join TableB

Но я понимаю, что вы получите строку в выходных данных для каждой комбинации строк в TableA с каждой строкой в ​​TableB ...

Так что, если таблица Aимеет 8 строк, а TableB имеет 4 строки, вы получите 32 строки данных ... Если вы хотите что-то меньшее, вам нужно указать несколько критериев соединения, которые отфильтровывают дополнительные строки из вывода

2 голосов
/ 02 сентября 2010

Ну, это будет работать:

Select A.ID, B.ID From
  (SELECT ROW_NUMBER () OVER (ORDER BY ID) AS RowNumber, ID FROM Tbl2 ) A
full outer join
  (SELECT ROW_NUMBER () OVER (ORDER BY ID) AS RowNumber, ID FROM Tbl1 ) B 
on (A.RowNumber=B.RowNumber)
0 голосов
/ 02 сентября 2010

Кросс-соединение SQL1 применяется и здесь.

Select * 
From tableA, TableB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...