SRKarn Ответов: 2

Объединить две таблицы без общего поля?


Как я могу объединить две таблицы без какого-либо общего поля?

NeverJustHere

Да. Вы можете сделать перекрестное соединение. Он соединит все строки таблицы а со всеми строками таблицы В.

2 Ответов

Рейтинг:
0

JagB

Это действительно неортодоксально, и, надеюсь, это не что-то в производстве. Но есть несколько способов сделать это - один из них упомянут NeverJustHere - наиболее приемлемый способ достижения вашего сценария.

Вот несколько способов, которые я знаю (возможно, их будет больше)::
1. декартово произведение - в основном сопоставление каждой строки в первой таблице с каждой строкой во второй таблице. Я не знаю, нужно ли вам это, так как если у вас есть 100 строк в первой таблице и 100 строк во второй таблице, это даст вам 10 000 строк! Добиться этого:

SELECT * FROM table1, table2

2. Объединение двух таблиц.
SELECT column1, column2, etc FROM table1
UNION
SELECT column1, column2, etc FROM table2

Вам нужно будет убедиться, что типы данных столбцов совпадают здесь.
3. перекрестное соединение (как уже упоминалось)
SELECT table1.Column1, table2.Column1 FROM table1 
CROSS JOIN table2 WHERE table.Column1 = 'Some value'

4. я бы даже сказал, что вы могли бы использовать внутреннее соединение также с условием, которое верно.
SELECT table1.Column1, table2.Column2 FROM table1 
INNER JOIN table2 ON 1 = 1 


Лучше всего было бы пойти с перекрестным соединением, как уже упоминалось другим пользователем.

Надеюсь, это поможет!
СС


Aman singh Parihar

Это сработало для меня, так как у меня нет никакой связи между двумя таблицами, количество столбцов и тип даже не совпадают, и я хочу, чтобы данные были в одном результирующем наборе.

Выбрать таблица1.Столбец 1, Таблица 2.Столбец2 из table1
Внутреннее соединение табл. 2 на 1 = 1

Рейтинг:
0

Santosh kumar Pithani

;WITH T1 AS (select EmpName,Salary,ROW_NUMBER()OVER(ORDER BY (SELECT 1))AS ID FROM table1),
     T2 AS (select Address1,StreetName,ROW_NUMBER()OVER(ORDER BY (SELECT 1))AS ID FROM table1)

SELECT T1.EMPNAME,
       T2.StreetName,
       T2.Address1 
 FROM T1 FULL JOIN T2 ON(T1.ID=T2.ID)


CHill60

Я предполагаю, что вы ответили на этот вопрос из-за решения 2, возвращающего его в список активных сообщений через 3 года, но на самом деле вы выбираете материал из одной таблицы с помощью двух CTE (а не двух таблиц), так что на самом деле это не совсем так

Santosh kumar Pithani

Две таблицы, возвращающиеся из CTE(производные таблицы также возможны) и соединяющие данные с использованием row_num(id) в качестве отношения ,чтобы избежать M*N строк(повторяющихся строк), Я верю, что этот запрос имеет смысл

CHill60

Очко - пропущено. Вы спрашиваете о том, что такой же таблица так ваш заказ по работам. Если таблицы не связаны между собой, то заказ по не обязательно будет работать, вы можете получить мусор. Вы не отвечаете на вопрос, который был задан, и на него был полностью дан ответ 3 года назад!