2012-07-20 5 views
1

두 개의 테이블 중 하나는 라이센스라고하고 하나는 시스템이라고합니다. 이제 라이센스 테이블에 시스템 ID와 라이센스 유형 (전체 또는 평가판)이 있습니다. 시스템 테이블은 시스템 mac_address를 유지합니다.비 반복 기록 찾기

이제 하나의 시스템에 두 개 이상의 평가판 라이센스와 전체 라이센스가있을 수 있습니다. 이제 정식 버전이 생성되지 않은 시스템을 mac_address와 함께 그룹화하여 찾고 싶습니다.

약간의 제안만으로 충분할 것입니다.

답변

1
select 
    s.* 
from 
    systems as s 
where 
    s.system_id not in 
    (select l.system_id from licenses as l where l.licence_type='full') 
+1

거의 비슷하지만 동일한 mac_address에 대해 생성 된 평가판 버전의 기록도 보여줍니다 ... –

+1

고맙습니다. 귀하의 ans에 따라 너무 많이 해킹을했고 마침내 나는 원하는 결과를 얻었습니다. 감사합니다. 시스템을 선택 –

+1

. *, 라이센스. * 에서 라이센스를 은 내부 ystems.id = License.system_id 에 시스템과 같은 시스템에 가입 라이센스로 WHERE system.mac_address하지 LIC와 같은 라이센스에서 ( 선택 system.mac_address IN 내부 내가 내 결과를 가지고이 쿼리를 사용하여 lic.system_id = s.id 곳 lic.license_type = '전체' ) 에의 같은 시스템을 가입 할 수 있습니다. –

0

여러분을 이해한다면 "전체"라이센스가없는 모든 시스템을 찾아야합니다. 순수 SQL에서는 LEFT JOIN을 사용하여이를 수행 할 수 있습니다.

SELECT DISTINCT s.system_id,s.mac_address 
FROM systems s 
LEFT JOIN licences l ON s.system_id=l.system_id AND l.licence_type = 'full' 
WHERE l.licence_id IS NULL 
+1

네,하지만 내 대답은 쿼리를 사용하여 내가 얻고 싶은 결과를 찾았습니다. 그리고 나는 또한 내가 얻으려는 것을 얻는 것에 대한 아이디어를 나에게 주었다고 감사한다. –

0

나는 같은 뭔가 정말 당신의 질문을 이해하지 않았다하지만 당신은 고유의 열 중 하나를 만들 수없는 이유는 무엇입니까?

+1

mac_address에 따라 시스템 및 라이센스를 관리해야하기 때문에 위와 같은 문제가 발생할 수 있습니다. 이제는 동일한 mac_address를 사용하지만 여러 레지스터 키를 사용하여 시스템을 두 번 이상 추가 할 수 있습니다. 그래서 모든 정보를 추적해야합니다. –

관련 문제