Я пытаюсь найти самый быстрый способ найти все записи в родительской таблице, у которых нет определенных записей в дочерней таблице. Например, я хочу, чтобы запрос возвращал все семейные записи, где нет ни детей мужского пола, ни детей вообще.
Пример 1
Это мучительно медленно:
ВЫБРАТЬ * ИЗ Семейства
ГДЕ Families.FamilyID НЕ ВХОДИТ (ВЫБЕРИТЕ FamilyID ИЗ ДЕТЕЙ, ГДЕ Children.Gender = "m")
Пример 2
Это быстрее:
ВЫБРАТЬ * ИЗ Семейства
ГДЕ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ * ОТ ДЕТЕЙ, ГДЕ Children.Gender = "m" И Children.FamilyID = Families.FamilyID)
Пример 3
Это самый быстрый, но я беспокоюсь о том, чтобы инвестировать в него, потому что я не могу найти какую-либо документацию по нему. Я даже не знаю, как это называется. Из-за отсутствия лучшего термина мы назвали его «анонимным запросом».
ВЫБРАТЬ * ИЗ Семейных
LEFT JOIN
[ВЫБРАТЬ * ОТ ДЕТЕЙ, ГДЕ ПОЛ = "m"]. КАК ПсевдонимДети
ON Families.FamilyID = AliasChildren.FamilyID
ГДЕ AliasChildren.FamilyID НУЛЬ
Итак, мой вопрос таков:
- Как называется эта вещь в примере 3?
- Является ли это «основной» функцией Access, которая
будет поддерживаться в будущем?
- Где я могу найти документацию по
это (это может быть проще, если я знаю, как это называется)?
Спасибо!