MySql объединить 3 таблицы - множественное объединение - PullRequest
1 голос
/ 19 ноября 2011

db image

SELECT type_files.html_embed_before
   , script_files.path
   , type_files.html_embed_after
FROM type_files
INNER JOIN script_files ON (type_files.type = script_files.type)

приведенный выше код дает мне информацию для всех script_files. Я хочу построить запрос и получить

  • script_files.id = script_match.file_id

  • script_matches.ap_id, равный article.head, header.head ИЛИ footer.head.

  • Идентификатор статьи, верхнего и нижнего колонтитула будет передан в

1 Ответ

1 голос
/ 19 ноября 2011

Требование, которое я меньше всего понимаю, это ваша ссылка из script_match на статью, верхний и нижний колонтитулы. Это должно быть то, что вы хотите, если я правильно понимаю.

SELECT tf.html_embed_before
   , sf.path
   , tf.html_embed_after
FROM type_files AS tf
INNER JOIN script_files AS sf ON tf.type = sf.type
INNER JOIN script_match AS sm ON sf.Id = sm.file_id
WHERE sm.ap_id IN
(
   SELECT a.head
   FROM article AS a
   WHERE a.id = @yourId

   UNION ALL

   SELECT h.head
   FROM header AS h
   WHERE h.id = @yourId

   UNION ALL

   SELECT f.head
   FROM footer AS f
   WHERE f.id = @yourId
)

MySQL JOIN документация

Статья Джеффа Этвуда о ужасах кодирования в Joins

...