Получение записей из проекта, содержащего несколько иерархий

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

введите здесь описание изображения

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

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


person Roobah    schedule 08.05.2011    source источник
comment
человек . простите . Я не знал об этом. В самом деле . не могли бы вы объяснить для меня? опять же, я не знаю об этом.   -  person Roobah    schedule 08.05.2011


Ответы (1)


Пытаться:

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;

Заполните различные столбцы, которые вы хотите вернуть, добавьте LEFT JOIN для всех таблиц конечных узлов и добавьте свои условия WHERE.

person Kevin Kreamer    schedule 11.05.2011