У меня есть две таблицы: TableA и TableB, объединенные TableA.TableA_Id-> 1..n <-TableB.TableA_Id. Простой ПК-ФК. </p>
Мне нужно извлечь различных записей TableA с заданным условием для TableB. Вот мой первый подход:
ВЫБРАТЬ * ИЗ ТАБЛИЦЫ A ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таблица B ВКЛ. A.idA = B.IdA И B.Date = '2009-01-10' ЗАКАЗАТЬ A.Id;
Это хорошо, но это не дает мне "отчетливых" записей. Некоторые записи в таблице B могут дублироваться, и, следовательно, я могу получить одни и те же записи более одного раза.
Поэтому я решил выполнить отбор (производительность не является проблемой, учитывая, что отбор, скорее всего, закончится максимум 20/30 записями):
SELECT * FROM TableA, ГДЕ TableA.Id IN (ВЫБЕРИТЕ РАЗЛИЧНЫЙ IdA ОТ TableB, ГДЕ Date = '20090110') ЗАКАЗАТЬ ПО TableA.IdA;
Это отлично работает.
Теперь вопрос: как я могу использовать Inner Join и все же получить различные значения? Возможно ли это за один проход или вложенный запрос является обязательным? Чего мне не хватает?