2012-12-22 3 views
0

단일보기로 여러 테이블에 액세스하려고하지만 내 쿼리에서 데이터가 일치하지 않습니다. 문제가 뷰 선언에 있다고 확신합니다. WHERE 절을 보면 보기를 통해 여러 테이블에 액세스

CREATE VIEW IF NOT EXISTS method_view 
AS SELECT 
peercreateddata.id, 
peercreateddata.name, 
peercreateddata.shared, 
peercreateddata.authorHash, 
peercreateddata.creationDate, 
peercreateddata.firstSeen, 
peercreateddata.lang, 
methods.primaryMatch, 
methods.methodHash, 
methods.methodbyline, 
methods.methodexpirationDate, 
methods.methodlocation, 
localResources.localmimeType, 
remoteResources.remotemimeType, 
remoteResources.remotelocation 

FROM peercreateddata peercreateddata, 
methods methods, 
localResources localResources, 
remoteResources remoteResources 

WHERE (methods.peerDataId = peercreateddata.id) 
     AND (localResources.localMethodId = methods.id) 
     AND (remoteResources.remoteMethodId = methods.id) ; 

는 methods.peerDataId 항상 peercreateddata.id의 하나의 값과 일치합니다. 테이블 localResources 및 remoteResources가 비어있는 경우가 있으며 때로는 쿼리와 일치하지 않는 경우가 있으며 때로는 여러 개의 일치 항목이 포함될 수 있습니다.

Android 용으로 개발 중입니다. 구문은 유효성 검사기를 통과시킵니다 ('name'이라는 필드 사용에 대한 불만이 있긴하지만).

답변

1

내부 및 외부 조인 절을 사용하십시오. docs을 참조하십시오.

이와 절에서 교체하고 어디

FROM peercreateddata peercreateddata 
inner join methods methods 
     on methods.peerDataId = peercreateddata.id 
left outer join localResources localResources 
     on localResources.localMethodId = methods.id 
left outer join remoteResources remoteResources 
     on remoteResources.remoteMethodId = methods.id 
제거
관련 문제