2011-11-08 2 views
-1
INSERT INTO dbo.VehiclesCategories (VehicleId, CategoryId) 
VALUES (t1.ID , t2.ID) 

SELECT t1.ID, t2.ID 
FROM dbo.Vehicle t1 
inner JOIN dbo.VehicleCategory t2 ON t1.Category = t2.Name 

위의 SQL에서 두 개의 값을 M : M 조인 테이블에 삽입하려고합니다. SELECT 문을 잘 작동하고 원하는 결과를 얻을. INSERT 문은 다음 오류를 발생시킵니다."이 컨텍스트에서 'X'이름을 사용할 수 없습니다."를 어떻게 수정합니까?

Msg 128, Level 15, State 1, Line 2 
The name "t1.ID" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted. 

테이블에 두 개의 값 (t1.ID 및 t2.ID)을 삽입하려면 어떻게합니까?

+1

추측에서 VALUES (t1.ID , t2.ID)을 삭제하십시오 : 당신은 그 두 개의 쿼리를 결합 할 경우

, 나는 당신이 원하는 것을 정확히 할 것 같아요 drive-by downvoter의 사상자 ... 설명은 멋질 것입니다. – DenaliHardtail

답변

7

INSERT 컨텍스트에서 t1t2이 존재하지 않기 때문입니다.

INSERT INTO dbo.VehiclesCategories (VehicleId, CategoryId) 
SELECT t1.ID, t2.ID 
FROM dbo.Vehicle t1 
inner JOIN dbo.VehicleCategory t2 ON t1.Category = t2.Name 
0

VALUES (t1.ID, t2.ID) 부품을 전혀 포함하지 마십시오.

0

내가 될 한이

INSERT dbo.VehiclesCategories (VehicleId, CategoryId) 
SELECT t1.ID, t2.ID 
FROM dbo.Vehicle t1 
JOIN dbo.VehicleCategory t2 ON t1.Category = t2.Name 
관련 문제