Выбор данных по нескольким таблицам в MySQL - PullRequest
0 голосов
/ 21 ноября 2010

Хорошо, я пытаюсь получить представление, которое возвращает некоторые поля из экземпляра Drupal, работающего на MySQL. Проблема в том, что эта информация распределена по трем таблицам:

таблица 1 (keyword_search_table): содержит следующие поля:

id, ключевое слово, dst пример данных: 1, «курица», «про / фред» 2, «коробки», «услуги / patching_stuff»

Таблица 2 (url_alias): содержит следующие поля:

PID, SRC, DST пример данных: 45, 'node / 22', 'aboustus / fred' 46, 'node / 36', 'patching_stuff'

таблица 3 (node_revisions): содержит следующие поля:

nid, заголовок, тизер пример данных:

22, «О Фреде - нашем президенте», «Фред - отличный парень, он был президентом в течение 4 лет ...» 36, «Patching Your Deck», «Patching your deck должно быть сделано с помощью колючей проволоки ...»

Я пытаюсь закончить с этим:

ключевое слово, destination_url, заголовок, teaser_text

пример вывода на основе данных выше:

  1. Цыпленок, Aboutus / Fred, О Фреде - наш президент, Фред - отличный парень, и он был президентом в течение 4 лет ...
  2. Коробки, услуги / patching_stuff, Заплата вашей колоды, Заплата вашей колоды должна быть сделана с помощью колючей проволоки ...

Полагаю, мне нужно сделать некоторые внешние и левые соединения ... Я плохо пишу эти вещи. Есть идеи?

1 Ответ

0 голосов
/ 21 ноября 2010

Вы не можете получить эти данные, потому что url_alias не содержит nid только pid. JOIN может быть сделан на одинаковых полях в разных таблицах. например, я выберу данные из ключевого слова_search_table и node_revisions.title.

SELECT keyword_search_table.nid, keyword_search_table.keyword, node_revisions.title, node_revisions.teaser FROM keyword_search_table INNER JOIN ON keyword_search_table.nid = node_revisions.nid;

если url_alias имеет nid (или вы можете быть уверены, что nid = pid), ваш запрос должен выглядеть примерно так:

SELECT keyword_search_table.nid, keyword_search_table.keyword, node_revisions.title, node_revisions.teaser, url_alias.pid FROM keyword_search_table INNER JOIN ON keyword_search_table.nid = node_revisions.nid INNER JOIN ON url_alias.pid = node_revisions.nid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...