2010-11-24 46 views
0
  1. 客戶(ID,姓名...)
  2. 產品(ID,姓名...)
  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