2013-02-12 5 views
0

먼저 사용하고있는 테이블부터 시작하겠습니다. 그들은 다음과 같이 보입니다.데이터 테이블에 문자열이없는 ID 선택

Table - Transaction 
=================== 
trans_id 
name 

Table - Checkpoint 
================== 
trans_id 
checkpoint_id 
checkpoint_data 

트랜잭션에는 여러 검사 점이있을 수 있으며 검사 점에는 하나의 트랜잭션 만있을 수 있습니다.

관련된 모든 검사 점에서 checkpoint_data에 일부 문자열을 포함하지 않는 일부 트랜잭션의 trans_id을 선택하는 SQL 문을 만드는 데 문제가 있습니다.

이 SQL 문은 어떻게 생겼을까요? 나는 오라클을 사용하고 있지만, 어떤 SQL은 올바른 방향

답변

1
select trans_id 
from transactions t 
left outer join checkpoint c on c.trans_id = t.trans_id 
where t.name = 'transaction name' 
group by t.trans_id 
having sum(case when contains(checkpoint_data, 'some string') > 0 
       then 1 
       else 0 
      end) = 0 
+0

일에 저를 가리켜 야합니다. . . 질문에 언급 된'where name = SOMENAME' 조건을 추가 할 수 있습니다. –

+0

@GordonLinoff : 감사합니다. 그것을 잊어 버렸습니다. –

0
Select distinct(ch.trans_id) from checkpoint ch join transaction t on ch.trans_id=t.trans_id and t.name like '%test%' and ch.chech_point not like '%exclude%' 
관련 문제