2013-06-03 3 views
0

서지 레코드 데이터베이스를 검색하고 일부 설정 매개 변수에 따라 둘 이상의 020 태그가있는 레코드를 모두 출력하는 쿼리를 실행하려고합니다.MARC 태그 (SQL)의 여러 인스턴스를 찾으려면 쿼리

참고 : 매개 변수는 유동적입니다. 중요한 부분은 둘 이상의 020 태그가있는 레코드를 찾는 것입니다. 여기

내가 무엇을 가지고 :

select b.bib#, b.text, t.processed, i.call, i.collection, i.creation_date 
from bib b, title t, item i 
where b.bib# = t.bib# and t.bib# = i.bib# 
    and b.tag = '020' 
    and i.collection in ('PIC', 'E') 
order by i.creation_date DESC, i.collection 

이 각각 020 및 첨부 된 텍스트를 표시합니다,하지만 난 두 개 이상의 020s 만 표시 레코드를 원한다. bib #에 의한 그룹일까요?

답변

0

나는 당신이 필요합니다 정확한 구문에 대한 확실하지 않다, 그러나 당신은 하위 쿼리 사용할 수 있습니다

    select b.bib# 
        from bib b 
        where b.tag = '020' 
        group by b.bib# 
        HAVING COUNT(*) > 1 

다음, '020'항목이 다수로 턱받이 번호를 식별 그 중 하나 또는 사용에 가입하기를 IN과 같은 기준은 다음과 같습니다.

select b.bib#, b.text, t.processed, i.call, i.collection, i.creation_date 
from bib b, title t, item i 
where b.bib# = t.bib# and t.bib# = i.bib# 
    and b.tag = '020' 
    and i.collection in ('PIC', 'E') 
    and b.bib# IN (select b.bib# 
        from bib b 
        where b.tag = '020' 
        group by b.bib# 
        HAVING COUNT(*) > 1) 
order by i.creation_date DESC, i.collection 
+0

그 것처럼 보입니다. 고마워요! – Marc