2014-04-26 3 views
0

게시자와 문학 (도서, 잡지 등) 간의 관계를 나타내는 견해를 가지고 있습니다.몇 가지 항목으로 상위 레코드를 가져 오는 더 나은 방법

내가 Book#ClarissaPublication#On the Nature of Things을 게시하는 출판사/S를 찾을 예를 들어
그래서 책 X를 게시 게시자 ID와 출판 Y.를 가져 오기 위해 노력하고 있어요 - 결과가 (4을하지만) 1,5을 PUBLISHER_ID된다. 나는 내부에 의해 그것을 할 것입니다

같은 뷰를 결합 : 나는 (내부 3 복잡한 뷰에 조인) 도서, 출판, 잡지에 의해 인출 할 때

select * 
from relations publication 
inner join relations books on publication.publisher_id = books.publisher_id 
where books.publication_type='Book' 
    and books.extended_field_3='Clarissa' 
    and publication.publication_type='Publication' 
    and publication.extended_field_4='On the Nature of Things' 

상황이 복잡해진다.

더 좋은 방법이 있습니까? 내가 extended_field_4-extended_field_1를 사용하는 모델을 가지고 싶지 않은

drop table relations; 

CREATE TABLE relations 
(
    publisher_id int, 
    publication_id varchar(255), 
    publication_type varchar(255), 
    extended_field_1 varchar(255), 
    extended_field_2 varchar(255), 
    extended_field_3 varchar(255), 
    extended_field_4 varchar(255) 
); 

insert into relations values(1,A,'Book','','','Clarissa',''); 
insert into relations values(1,B,'Publication','','','','On the Nature of Things'); 
insert into relations values(1,C,'Book','','','Frankenstein',''); 
insert into relations values(3,D,'Book','','','',''); 
insert into relations values(3,E,'Publication','','','','A Paradoxical Ode'); 
insert into relations values(4,F,'Magazine','Time','','',''); 
insert into relations values(4,G,'Book','','','Clarissa',''); 
insert into relations values(4,H,'Publication','','','','Human Chemistry'); 
insert into relations values(4,I,'Book','','','The Woman in White',''); 
insert into relations values(5,K,'Book','','','Clarissa',''); 
insert into relations values(5,L,'Publication','','','','On the Nature of Things'); 
+0

Oracle 또는 SQL Server를 사용하고 있습니까? 이 구문은 SQL Server를 제안합니다. –

+0

오라클, 구문 예를 들어 주셔서 감사합니다. – user648026

답변

0

(오라클 특정 또한 도움이 될 수 있습니다)하지만 쿼리가 잘 보인다.

extended_field에 대해 각각 index을 작성하여 검색 성능을 향상시키는 조건으로 사용하십시오.