Я попытался использовать сложные условия в подзапросе, но он не вернул ожидаемый результат. Можете ли вы посмотреть пример ниже, чтобы понять, почему запрос не работает?Sql server Несколько подзапросов условий
Table : 1
EntityID StartDate EndDate
121 2013-08-01 2013-08-31
122 2013-08-01 2013-08-31
123 2013-08-01 2013-08-31
Table : 2
EntityID AttributeID AttributeValue
121 41 304
122 41 304
123 41 304
123 54 307
Теперь я пытаюсь выборки на основе AttributeID и AttribueValue из таблицы-2 и Звездную и EndDate из table1, используя следующий запрос. (Пример: На 41 и 304, и 54, и 307 получили удовлетворены 123 только я хочу принести, что 123 только одна запись)
SELECT pe.EntityID
FROM table1 pe
WHERE pe.StartDate = '2013-08-01'
AND pe.EndDate = '2013-08-31'
AND pe.EntityID IN (SELECT peaiv.EntityID
FROM table2 peaiv
WHERE peaiv.AttributeID IN (41)
AND peaiv.[Value] IN (304)
AND peaiv.EntityID IN (SELECT peaiv.EntityID
FROM
PT_EntityAttributesIntValues
peaiv
WHERE peaiv.AttributeID IN (54)
AND peaiv.[Value] IN (307))
EntitID
--------
121
122
123
Запрос возврата выше результат, но я ожидал результата только . Может ли кто-нибудь попробовать это.
Является ли PT_EntityAttributesIntValues table2? И является peaiv. [Value] должен быть peaiv. [AttributeValue]? –
Итак, вы создали структуру базы данных EAV, и вы обнаружили, что запросы сложны и не возвращают ожидаемые результаты? Не могу сказать, что я удивлен. – podiluska