У меня есть две таблицы:
Информация о родителе
Информация о ребенке
оба структурированы (почти) одинаково с несколькими нюансами.
Структура таблиц следующая:
Родитель
ID | First | Last | DOB | Address
-------------------------------------------------
1 | John | Doe | 1980-01-01 | 123 street
Зависимые
ParentID | Type | First | Last | DOB
--------------------------------------------------
1 | Spouse | Jane | Doe | 1981-02-01
1 | Child | Mike | Doe | 1999-08-01
1 | Child | Zoe | Doe | 2002-04-01
Я хочу построить запрос (в идеале один вызов с объединениями, который возвращает следующее:
Таблица результатов
First | Last | Type | DOB | Address
----------------------------------------------------------------
John | Doe | Parent | 1980-01-01 | 123 Street
Jane | Doe | Spouse | 1981-02-01 | 123 Street
Mike | Doe | Child | 1999-08-01 | 123 street
Zoe | Doe | Child | 2002-04-01 | 123 Street
Полагаю, я мог бы построить исходный подзапрос с помощью LEFT JOIN для таблицы зависимостей (не у всех родителей есть иждивенцы), а затем выполнить первичный запрос, который фильтрует эту таблицу, однако - когда я это делаю, запрос занимает более минуты производить. (мои таблицы меняются сотни раз в день, поэтому сохранить индекс таблиц на самом деле не вариант, так как мне придется постоянно перестраивать).
UPDATE
Чем больше я думаю об этом, даже левое соединение не будет работать обязательно, потому что родительская информация и первый набор зависимой информации будут находиться в одной строке подзапроса (и, в свою очередь, сделают «невозможным» первичный запрос для фильтровать одну строку на несколько).
Есть идеи?