SQL Server, для каждой инструкции - PullRequest
0 голосов
/ 24 ноября 2010
  1. Клиенты (Id, Имя ...)
  2. Продукты (id, Имя ...)
  3. Clients_Products (client_id, product_id)

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

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

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

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

Я могу сделать это программно с VB. NET, но я думаю, что был бы способ достичь этого.

Ответы [ 4 ]

1 голос
/ 24 ноября 2010

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

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 голос
/ 24 ноября 2010
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 голосов
/ 24 ноября 2010

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

insert into clients_products  
select
  clients.id,products.id 
from clients
  cross join products
0 голосов
/ 24 ноября 2010

Я не уверен, что понимаю, что вы говорите, но звучит так, будто вы хотите перебрать набор записей в SQL.Смотрите это:

http://msdn.microsoft.com/en-us/library/ms180152.aspx

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