Это то, что вы ищете?
select
t.ID,
t.uri,
h.ID as HeaderID,
h.Content as HeaderContent,
wpc.id as WebPageID,
wpc.Content as WebContent
from
template t
left join header h
on t.id = h.template_id
left join web_page_content wpc
on t.id = wpc.template_id
- РЕДАКТИРОВАТЬ -
Для уточнения подвыборов против присоединения за комментарий / отзыв.
В этом случае у вас есть возможность выполнить прямое соединение из одной таблицы в другую в соотношении 1: 1 по идентификатору шаблона.Движок находит совпадения непосредственно по индексам, чтобы затем извлекать данные.Это почти как движок, который неявно выполняет (выбрать / откуда / где) идентификатор ключа для вас.Я не понимаю всей сути того, КАК это делает, просто делает это хорошо.Делая суб-выбор, вы заставляете механизм явно выполнять запрос для каждой записи в таблице шаблонов для каждого идентификатора ... Допустим, у вас есть 20 шаблонов и 1000 страниц веб-контента.Выполнение суб-выбора (например, где EXISTS) фактически запустит запрос select / from 1000 раз явно для соответствующего идентификатора.
Что касается декартовой системы, если вы только что перечислили таблицы «От» безпри условии соединения вы получите набор результатов, который будет составлять столько же записей из таблицы «A» РАЗ, сколько в таблице «B» .. так что если вы сделали простое
select
t.*,
wpc.*
from
template t,
web_page_content wpc
order by...
БЕЗ ГДЕ (соединяя их), или явное JOIN, и приведенная выше запись насчитывает выборку ... в результате вы получите 20 000 записей в наборе результатов.