У меня есть следующие таблицы:SQL несколько подзапросов в ИНЕКЕ
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')
I Я пытаюсь выбрать address_components строку «001», потому что я пытаюсь получить строки, которые имеют как атрибутные записи «lot = 546», так и SubDiv = Avondale Spring ». Не все, но оба атрибута должны существовать.
Запрос не возвращает совпадений; однако, когда я запрашиваю использование одного подзапроса (исключая 1 из 2 подзапросов), запрошенные строки возвращаются для этого одного запроса.
[Плохие привычки пинать: использование старого стиля JOIN и] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad -habits-to-kick-using-old-style-joins.aspx) - этот стиль таблиц * в стиле старого стиля * с запятой был заменен на синтаксис * надлежащего * ANSI 'JOIN' в ANSI - ** 92 ** Стандарт SQL (** более 20 лет ** назад) и его использование не рекомендуется –
Какая эта СУБД? Добавьте тег, чтобы указать, используете ли вы 'mysql',' postgresql', 'sql-server',' oracle' или 'db2' - или что-то еще. –