2013-02-28 2 views
0

select 문이 반환하는 결과를 삭제하고 싶습니다. 테이블간에 관계가 있고 다른 테이블의 자식 행에있는 최상위 테이블을 삭제하면이 작업을 수행하는 이유가 있습니다. 삭제 될 수도 있습니다.SQL Server 저장 프로 시저 삭제 명령문

누구나 나를 위해이 저장 프로 시저를 수정할 수 있습니까? 당신이 IDOne이 가능한 값의 목록에있는 경우 모든 행을 삭제할 때문에

ALTER proc [dbo].[storedprocname] 
    (@Parameter uniqueidentifier = '00000000-0000-0000-0000-000000000000') 
AS BEGIN 
    DELETE FROM TableOne 
    WHERE IDOne IN 
     (SELECT 
      IDOne, 
      DescOne, IndexOne, 
      IDTwo, 
      QuestionTwo, ControlTypeTwo, IndexTwo, 
      IDThree, 
      DescThree, IndexThree, 
      QuestionFour, 
      OptionFour 
    FROM 
      TableOne 
     INNER JOIN 
      TableTwo ON TableTwo.CatID = TableOne.IDOne 
     INNER JOIN 
      TableThree ON TableThree.Question = TableTwo.IDTwo 
     LEFT OUTER JOIN 
      TableFour ON TableFour.Question = TableThree.IDThree 
     WHERE 
      TableOne.IDOne = @Parameter) 
END 

답변

1
ALTER proc [dbo].[storedprocname] 
    (@Parameter uniqueidentifier = '00000000-0000-0000-0000-000000000000') 
AS BEGIN 
    DELETE FROM TableOne 
    WHERE IDOne IN 
     (SELECT 
     IDOne 
     FROM 
     TableOne 
     INNER JOIN 
     TableTwo ON TableTwo.CatID = TableOne.IDOne 
     INNER JOIN 
     TableThree ON TableThree.Question = TableTwo.IDTwo 
     LEFT OUTER JOIN 
     TableFour ON TableFour.Question = TableThree.IDThree 
     WHERE 
     TableOne.IDOne = @Parameter) 
END 
1

일 - IN (...)도 반환 후 당신은 반드시 하위 쿼리를 만들 필요가 에 사용할 수있는 단일 열 비교! 결국, 당신은 ....

현재 반환하고 컬럼의 전체 목록에 하나의 IDOne 값을 비교할 수있는이 같은 시도 : (질문을

ALTER proc [dbo].[storedprocname] 
    (@Parameter uniqueidentifier = '00000000-0000-0000-0000-000000000000') 
AS BEGIN 
    DELETE FROM TableOne 
    WHERE IDOne IN 
     (SELECT 
      IDOne 
     FROM 
      TableOne 
     INNER JOIN 
      TableTwo ON TableTwo.CatID = TableOne.IDOne 
     INNER JOIN 
      TableThree ON TableThree.Question = TableTwo.IDTwo 
     LEFT OUTER JOIN 
      TableFour ON TableFour.Question = TableThree.IDThree 
     WHERE 
      TableOne.IDOne = @Parameter) 
END 

모르겠다을 너무 모호하고 명확하지 않은 경우) 서브 쿼리 안에있는 JOIN이 정말로 필요한지 .... 당신의 요구 사항에 맞게 조정해야 할 수도 있습니다.