Извлечение записей из дизайна, содержащих несколько иерархий - PullRequest
0 голосов
/ 08 мая 2011

У меня есть 4 таблицы (Тип01, Тип02, Тип03, Тип04).У них разные столбцы.Таблица Type01 является родителем 3 дочерних таблиц (subtype01, subtype02, subtype03).И у него есть отношение один к одному со своими дочерними элементами (каждая запись в родительском элементе соответствует одной записи, которая существует только в одном из дочерних элементов).Я хочу получить все (чтобы упростить жизнь) записи всех 4 таблиц, включая связанных детей по порядку (дата вставки).Итак, я создал супер таблицу с универсальным идентификатором для типов.Смотрите рисунок, пожалуйста.

enter image description here

Теперь, что такое SQL-запрос для получения всех записей 4 таблиц, включая дочерние элементы таблицы Type01?и является ли это наиболее эффективным дизайном (пространство и скорость извлечения)?

Большое спасибо.

1 Ответ

1 голос
/ 11 мая 2011

Попробуйте:

SELECT Types.ID, COALESCE(SubType1.Name, Type2.Name, Type3.Name) as Name,
  COALESCE(SubType2.Description, Type1.Description, Type2.Description) as Description,
  ...
FROM Types
  LEFT JOIN SubType1 ON (Types.ID = SubType1.ID)
  LEFT JOIN SubType2 ON (Types.ID = SubType2.ID)
  ... 
WHERE ...
ORDER BY Types.Insert_Date;

Заполните различные столбцы, которые вы хотите вернуть, добавьте ЛЕВЫЕ СОЕДИНЕНИЯ для всех таблиц конечных узлов и добавьте условия WHERE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...