하위 테이블 삭제 관한 질문입니다. (MY SQL) 1 3 1,850

by 지후 [MySQL] [2015.09.02 18:09:42]


ID CODE_NUM ITEM_NAME
215   과자
216   음료수
217   견과류
218 217 아몬드
219 217 땅콩
220 217 호두
221 219 오징어땅콩
222 219 계피맛땅콩
223 221 작은봉지
224 221 큰봉지

테이블 삭제 관련 하여 질문 드립니다. 하루종일 해매다 글 남겨 놓네요 ㅠ0ㅠ;
테이블 구조는 위와같습니다.
테이블 이름: ITEM_LIST

견과류
 - 땅콩
    - 계피맛땅콩
    - 오징어땅콩
       - 작은봉지
       - 큰봉지
  - 아몬드
  - 호두
이와 같은 형태 인데
견과류를 삭제하면 자동으로 아래 하위 목록까지 테이블에서 다 삭제 하고 싶습니다.

원하는 결과값

ID CODE_NUM ITEM_NAME
215   과자
216   음료수

이부분 명령어를 어떻게 해야 될까요?ㅠ0ㅠ 고수님들의 답변 부탁드립니다.

견과류 ID를 가지고 있는 아이템을 찾아내고 삭제하고 삭제된 셀에 ID를 가지고 있는 셀을 검색해서 또 삭제하고
다시 삭제된 셀에 ID를 갖고 있는 셀을 찾아내서 삭제하고... 이런식으로 반복해서 삭제하면 될것 같긴한데 잘 모르겠습니다.

위 테이블명를 토대로 예를 들어 쿼리문을 알려주시면 정말 감사하겠습니다. (MY SQL)

by 마농 [2015.09.02 18:36:35]

MS-SQL 이라면 계층 구조 쿼리가 가능합니다.

WITH t AS
(
SELECT id, code_num, item_name
  FROM item_list
 WHERE id = 217
 UNION ALL
SELECT c.id, c.code_num, c.item_name
  FROM t p
 INNER JOIN item_list c
    ON p.id = c.code_num
)
SELECT *
  FROM t
;

mySQL 이라면? 앞선 답글의 재귀호출 프로시져가 가능한지 검토해 보시는 게 좋을 듯 하네요.


by 지후 [2015.09.02 18:45:43]

MY SQL이랑 비슷할것 같아서 해봤는데 안되네요 ㅠ0ㅠ
테이블 구조를 다시 좋게 짜는 방법이 없을가요?


by 마농 [2015.09.02 18:50:03]

재귀 프로시져 적용 가능성 검토는 해보셨는지요?

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입