Как получить каждую перестановку в двух абсолютно не связанных таблицах с t-sql - PullRequest
2 голосов
/ 26 февраля 2010

У меня есть две таблицы, которые косвенно связаны другой таблицей

Таблица A - ID, SomeFieldA

TableB - ID, SomeFieldB

TableAB - IDA, IDB, SomeFieldAB

Я должен генерировать данные с нуля. Поэтому я поместил некоторые данные в таблицу А, а некоторые данные - в таблицу В. Проблема в том, что мне нужно вставить данные в TableAB сейчас, и я не знаю, как сгенерировать скрипт, который будет выполнять все преобразования TableA и TableB вместе.

Например:

Таблица A имеет две записи:

1, 'A'

2, 'AA'

Таблица B содержит две записи:

3, 'B'

4, 'B'

Я хочу вставить следующие данные в таблицуAB:

1, 3, «первая завивка»

1, 4, «вторая перми»

2, 3, «третья пермь»

2, 4, «четвертая пермь»

Какой самый простой способ сделать это?

Ответы [ 3 ]

7 голосов
/ 26 февраля 2010

Не используйте древний синтаксис соединения: FROM A, B, используйте правильное соединение:

DECLARE @TableA table (Col1 varchar(5), Col2 varchar(5))
DECLARE @Tableb table (Col1 varchar(5), Col2 varchar(5))

INSERT INTO @TableA VALUES ('a','a')
INSERT INTO @TableA VALUES ('aa','aa')

INSERT INTO @TableB VALUES ('b','b')
INSERT INTO @TableB VALUES ('BB','BB')

SELECT
    *
    FROM @TableA
        CROSS JOIN @TableB
    ORDER BY 1

OUTPUT

Col1  Col2  Col1  Col2
----- ----- ----- -----
a     a     b     b
a     a     BB    BB
aa    aa    b     b
aa    aa    BB    BB

(4 row(s) affected)

это также даст тот же набор результатов:

SELECT
    *
    FROM @TableA
        JOIN @TableB ON 1=1
    ORDER BY 1
0 голосов
/ 26 февраля 2010

Вы можете сделать это:

select
    a.*, b.*
from
    a, b

При этом будет перекрестное соединение , которое даст вам все возможные комбинации.

Отсюда просто использовать это в контексте оператора INSERT для заполнения таблицы AB.

0 голосов
/ 26 февраля 2010
 INSERT TableAB
 SELECT A.ID 'IDA', B.ID 'IDB'
      , A.SomeFieldA+" "+B.SomeFieldB  'SomeFieldAB' 
 FROM A, B

Объединение без каких-либо условий делает все перестановки

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