2014-07-22 2 views
-1

에서 원치 않는 항목을 필터링 주어진 작업, '실행 중', '완료'또는 '실패'상태가있을 수 있습니다. 경우에 따라 작업이 실패하고 다시 실행됩니다. 또는 내 직업이 영원히 돌아가고 다른 직업이 시작됩니다. 따라서 경우에 따라 작업에 2 가지 상태 (예 : '실패'및 '완료')가있는 항목이 두 개있을 수 있습니다. 이 경우 한 항목 만 원합니다. 항목 중 하나가 '완료'이면 언제든지 다른 항목을 제거하고 싶습니다.다음과 같은 속성을 가지고 그 내가 (정말, 쿼리의 결과) 테이블이 테이블

어떻게해야합니까? 조건부로 '겹치는'항목을 제거하려면 어떻게합니까?

편집 : 자체에 테이블에 합류했다 생각

하나의 옵션 (내 표는 실제로 쿼리이기 때문에 WITH 절을 사용하여). 그러나 나는 그것이 어떻게 작동하도록 할 수 있는지, 또는 두 개의 원하는 항목 중 하나만 리턴되도록 설정할 조건을 확신하지 못합니다.

+0

어떻게 생각하십니까? 스스로 문제를 풀려고 시도했음을 보여줘야합니다. – MattD

답변

0

이렇게하는 가장 좋은 방법은 테이블을 정상화하는 것입니다. 이처럼 보이도록 테이블을 가지고 변경 하기 :

Continent 
Group_name 
job_name 
run_time 
statusID_FK 

다음, 상태 ID에게 상태 테이블에 연결된 외부 키를합니다

StatusID 
Status_Description 

은 (상태 설명은 무엇이든 호출 할 수 있습니다 값. "완료"등)

그런 다음 테이블간에 1-Many 관계를 설정해야합니다.

일단 완료되면 응용 프로그램 코드에 논리를 추가하십시오. 그러면 응용 프로그램 코드에 논리를 추가하여 항목이 "완료"되어 있고 기준에 따라 제거 할 수있는 경우 (업데이트가 수행 될 때마다) 지정한 간격으로 확인합니다.

발견되면 SQL 저장 프로 시저를 사용하여 데이터베이스에서 삭제하십시오.

적어도 내가하는 일입니다. 희망이 도움이!

+0

내 '테이블'은 쿼리의 결과입니다. 그래서이 코드가 전혀 작동하지 않을 것이라고 생각합니다. 애플리케이션 코드에서 논리를 변경하는 것 자체가 사실 옵션이 아닙니다. – DanGordon

+0

나에게 ** shmeebing ** 같은 소리가납니다 ... – BMaze

관련 문제