2013-03-11 2 views
-1

SQL 쿼리로 필터를 만들려고하지만 다른 테이블에 연결되는 숫자 값에 문제가 있습니다.SQL 쿼리를 사용하여 필터 만들기

다른 테이블에 연결하려고 할 때마다 동일한 레코드를 가져와 다른 테이블의 모든 요소에 대해 반복합니다.

로부터
ELEMENTS.RID, TAXONOMIES.SHORT_DESCRIPTION [형태] ELEMENT_NAME, ELEMENT_ID, SUBSTITUTION_GROUPS.DESCRIPTION, namespace_prefix, datatype_localname
을 선택

예를 들어, 여기에서 질의이고
엘리먼트, 서브 그룹, TAXONOMIES, SCHEMAS, DATA_TYPES
WHERE
ELEMENTS.TAXONOMY_ID = TAXONOMIES.RID AND ELEMENTS.ELEMENT_SCHEMA_ID = SCHEMAS.RID
AND ELEMENTS.DATA_TYPE_ID = DATA_TYPES.RID
AND ELEMENTS.SUBSTITUTION_GROUP_ID = 0

마지막 행은 실제 필터링 기준이다. 는 enter image description here

만 (항목은 0의 RID가) 하나 개의 결과가 있어야 : 여기

는 예를 들어 결과입니다. 그러나 그것은 대체 그룹 테이블 안에 모든 결과에 대해 하나의 레코드 사본을 반복합니다 (4가 있습니다).

다음은 참조 용 데이터베이스 스키마입니다. 선은 테이블과 원 사이의 관계는 내가 원하는 값을 나타냅니다 : enter image description here

+1

두 가지 : 1) 수행중인 작업을 명확히하기 위해 쿼리에서 INNER/OUTER JOIN을 사용하십시오. 2) 당신이 그 테이블에서 빠져 나가고 있는데도 SUBSTITUTION_GROUPS에 참여하지 않습니다. 그것을 추가해야합니다. – Melanie

+0

동의 함, [유지할 수없는 고대의 'FROM a, b, c'구문 사용 중지] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick- using-old-style-joins.aspx). –

답변

2

당신은 당신의 쿼리에 ELEMENTSSUBSTITUTION_GROUPS 사이에 가입하는 것을 잊었다하고 있습니다.

SELECT 
ELEMENTS.RID,TAXONOMIES.SHORT_DESCRIPTION,[type],ELEMENT_NAME,ELEMENT_ID,SUBSTITUTION_GROUPS.DESCRIPTION,namespace_prefix,datatype_localname 
FROM 
ELEMENTS,SUBSTITUTION_GROUPS,TAXONOMIES,SCHEMAS,DATA_TYPES 
WHERE 
ELEMENTS.TAXONOMY_ID = TAXONOMIES.RID AND ELEMENTS.ELEMENT_SCHEMA_ID = SCHEMAS.RID 
AND ELEMENTS.DATA_TYPE_ID = DATA_TYPES.RID 
AND ELEMENTS.SUBSTITUTION_GROUP_ID = SUBSTITUTION_GROUPS.RID 
AND ELEMENTS.SUBSTITUTION_GROUP_ID = 0 
+0

아, 내가 어떻게 그리워하는지 모르겠어!. 하지만 오류가 발생합니다. "[Err] 42000 - [SQL Server] 다중 부분 식별자"SUBSTITUTION_GROUP.RID "을 바인딩 할 수 없습니다." –

+0

@ johnhannigan : 죄송합니다. typo..SUBSTITUTION_GROUP'은 (는) SUBSTITUTION_GROUPS이어야합니다. 나는 방금 내 대답을 고쳤다 –

+0

와아, 고마워! –

관련 문제