Quelle est la manière la plus concise d' insert une série de valeurs pour chaque ligne d'une table? Peut-il être fait sans utiliser une boucle ou un slider?
Par exemple, en supposant que les chats, les chiens et les écureuils partagent tous les comportements 1, 2 et 3:
Tableau 1:
=================== Id | Name =================== 1 | Cat ------------------- 2 | Dog ------------------- 3 | Squirrel
Tableau 2:
============================= AnimalId | BehaviorId ============================= 1 | 1 ----------------------------- 1 | 2 ----------------------------- 1 | 3 ----------------------------- 2 | 1 ----------------------------- 2 | 2 ----------------------------- 2 | 3 ----------------------------- 3 | 1 ----------------------------- 3 | 2 ----------------------------- 3 | 3 -----------------------------
Cela peut être fait en utilisant une simple instruction d'insertion:
insert into table_2 (AnimalId,BehavoirId) select t1.AnimalId , t3.BehavoirId from table_1 t1 cross join table_3 t3
En supposant que les comportements sont dans table_3
declare @t table (Id int,Name varchar(10)) insert into @t(Id,Name)values (1,'cat'),(2,'dog'),(3,'Squirrel') declare @tt table (AnimalId int,BehaviourId int) INSERT INTO @tt(AnimalId,BehaviourId) select tt.ID,t.ID from @tt CROSS APPLY (SELECT ID from @t ) tt Select * from @tt