2013-06-17 1 views
0

Я не знаю, возможно ли это или нет. Если возможно, пожалуйста, помогите мне решить эту проблему.Выберите из двух таблиц, которые не имеют отношения

У меня есть две таблицы, table1 и table2:

 table1        table2 
column1  column2    column3   column4  
    1   2      A     B    
    3   4      C     D 

Там нет никакой связи между table1 и table2. Я хочу, чтобы выполнить запрос, так что мой результат выглядит следующим образом:

Выходной стол:

column1  column2  column3  column4 
    1   2    A    B 
    1   2    C    D 
    3   4    A    B 
    3   4    C    D 

Может кто-нибудь пожалуйста, скажите мне, как я могу добиться этого? Мы используем SQL Server 2005.

Спасибо, Kartic

+0

MySQL Server 2005? Вы уверены, что это не MS SQL? –

ответ

0

Это называется cross join, который производит декартово произведение всех записей в каждой из таблиц. Лучший способ сделать это явно, с синтаксисом cross join:

select t1.*, t2.* 
from table1 t1 cross join 
    table2 t2; 

Обратите внимание, что если либо таблица пуста, то вы не получите ни одной строки обратно.

+0

Спасибо Гордон. Это именно то, что я хотел. – tik

0

Как это?

SELECT * FROM table1 CROSS JOIN table2 

Это называется крестообразное соединение или декартова произведение.

Вы можете добавить дополнительные условия фильтрации или соединения, используя WHERE.

+0

Я предполагаю, что оба этих ответа были опущены для использования ANSI SYNTAX для CROSS JOIN? Похоже, этот был суровым, поскольку он даст правильный ответ. –

+1

[Плохие привычки пинать: использование JOIN в старом стиле] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins. aspx) - стиль старого стиля * разделенный запятыми список таблиц * был отменен с помощью ANSI - ** 92 ** SQL Standard. Пожалуйста, не предлагайте вещи, устаревшие для ** более 20 лет **. –

+0

Кому это нужно. Он спрашивает о MS SQL. Не SQL. И изначально это был даже MySQL, который, как предпочтительный синтаксис соединения. Я действительно устал от этого. –

0

Вам необходимо использовать кросс-соединение.

select t1.*,t2.* from table1 t1 
Cross Join table2 t2; 
+0

Спасибо Flying_Machine. – tik

Смежные вопросы