2015-08-27 6 views
1

Предположим, у меня есть две таблицы A и B, каждая из которых имеет уникальные столбцы идентификатора A_id и B_id соответственно. Тогда, допустим, однажды я просыпаюсь и решаю, что у двух таблиц есть отношения. Итак, я создаю таблицу AB, содержащую пары A_id, B_id. Затем я перехожу к написанию сценария SQL-сервера, который вставляет эти пары на основе других данных в таблицах, например A_name и B_name. Я бы ожидать, что фактическое введение что-то работать, как это (хотя и с более продвинутым ИНЕК набран пользователем, хотя сценарий Powershell или что-то):Создание таблицы соединений в SQL Server

INSERT INTO AB (A_id, B_id) 
VALUES 
((SELECT (A_id) FROM A WHERE A_name = 'bob'), 
(SELECT (B_id) FROM B WHERE B_name = 'john')) 

Я не уверен в правильности синтаксиса для таких Операция. Может кто-то указать мне верное направление?

+0

Вы хотите использовать операцию [РЕГИСТРИРУЙТЕСЬ] (http://www.techonthenet.com/sql_server/joins.php), а затем 'SELECT' из его вывода. –

ответ

2

Вместо того, чтобы выбрать из двух суб-выбирает, вы должны выбрать из объединения двух таблиц, используя любую логику вы собираетесь использовать:

INSERT INTO AB (A_id, B_id) 
SELECT a.A_id, b.B_id 
FROM A 
INNER JOIN B 
ON A.SomeColumn=B.SomeColumn 

Или повторить ваш пример более точно, будет выглядеть следующим образом:

INSERT INTO AB (A_id, B_id) 
SELECT a.A_id, b.B_id 
FROM A 
INNER JOIN B 
ON A.A_name='bob' 
AND B.B_name='john' 
+0

Не существует A.SomeColumn, который равен B.SomeColumn. Логика там, вероятно, будет слишком продвинутой для SQL-скрипта или просто будет указана пользователем: «Хм ... Я думаю, что Боб и Джон должны быть связаны через таблицу AB ...» – AaronF

+0

Не поймал ваше дополнение до тех пор, пока после комментария. – AaronF

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