address_components (테이블)
ADDRESS_ID STREET_NUMBER STREET_NAME
-----------------------------------------------------
001 1402 Motz
002 505 31st
003 4100 Stimmel
속성 (테이블)
ID ATTRIBUTE_DEFINITION_ID VALUE
----------------------------------------------------------------
001 Lot 546
001 SubDiv Avondale Spring
002 Lot 546
002 SubDiv Garden
003 Lot 131
003 SubDiv Avondale Spring
그리고 다음과 같은 SQL 문 :
을SELECT
street_number,street_name
FROM
address_components a, attributes attr
WHERE
a.address_id = attr.id
AND EXISTS (SELECT 1 FROM attributes
WHERE attr.attribute_definition_id = 'Lot'
AND attr.value = '546')
AND EXISTS (SELECT 1 FROM attributes
WHERE attr.attribute_definition_id = 'SubDiv'
AND attr.value = 'Avondale spring')
a "lot = 546"및 SubDiv = Avondale Spring "이라는 두 속성 항목이있는 행을 검색하려고하기 때문에 address_components 행"001 "을 선택하려고했습니다. 둘 중 하나의 속성이 존재해야합니다.
쿼리가 일치하는 항목을 반환하지 않습니다. 그러나 하나의 하위 쿼리 (2 개의 하위 쿼리 중 1 개를 제거)를 사용하여 쿼리를 수행하면 해당 단일 쿼리에 대해 요청 된 행이 반환됩니다.
: 당신은 상관 하위 쿼리하려면 [걷어차 나쁜 습관 : 이전 스타일을 사용하여 조인 (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad 오래된 스타일의 쉼표로 구분 된 테이블 * 스타일 목록이 ANSI에서 * 적절한 * ANSI'JOIN' 구문으로 바뀌 었습니다 - ** 92 ** SQL 표준 (** 20 년 전 **) 및 그 사용은 권장하지 않습니다 –
어느 RDBMS입니까? 태그를 추가하여 mysql, postgresql, sql-server, oracle 또는 db2 중 어느 것을 사용하는지 지정하십시오. –