2010-11-24 3 views
0
  1. Клиенты (Id, Name ...)
  2. Products (номер, имя ...)
  3. Clients_Products (client_id, product_id)

Я добавил 10 Клиентам и мне нужно обновить таблицу соединений (clients_products) и добавить новую запись для каждого продукта и каждого клиента.SQL Server, для каждой команды

Есть ли способ сделать двойной цикл или что-то в студии управления SQL Server или что-то в этом роде?

Затем я удалил 10 строк, но я хочу создать эти 10 строк и присоединиться к ним со всеми продуктами напрямую. (просьба пересмотреть это последнее предложение - не имеет смысла)

любая помощь? thx

Я могу сделать это программно с помощью vb .net, но я думаю, что для этого будет какой-то способ.

ответ

1

Это требует перекрестного соединения

INSERT INTO clients_products (client_id, product_id) 
SELECT c.ID, p.ID 
FROM Clients c 
CROSS JOIN Products p 
LEFT JOIN clients_products cp 
    on c.client_id and p.product_id 
WHERE cp.client_id is null and p.product_id is null 
1
INSERT INTO Clients_Products 
SELECT c.Id, p.Id 
FROM Clients c 
JOIN Products p on 1=1 
WHERE c.Name in ('NEW CLIENT 1', 'NEW CLIENT 2') 
0

Если я понял ваш вопрос правильно, вы просите декартово объединение как таблиц:

insert into clients_products 
select 
    clients.id,products.id 
from clients 
    cross join products 
Смежные вопросы