在MySQL中选择跨多个表的数据

时间:2010-11-20 21:14:44

标签: drupal mysql

好的,我正试图以一个视图结束,该视图从在MySQL上运行的Drupal实例返回一些字段。问题是这些信息分散在三个表格中:

表1(keyword_search_table):包含以下字段:

id,keyword,dst 示例数据: 1,'鸡','aboutus / fred' 2,'boxes','services / patching_stuff'

表2(url_alias):包含以下字段:

pid,src,dst 示例数据: 45,'node / 22','aboustus / fred' 46,'node / 36','patching_stuff'

表3(node_revisions):包含以下字段:

nid,title,teaser 示例数据:

22,'关于弗雷德 - 我们的总统','弗雷德是一个伟大的家伙,已经长达4年...... 36,“修补你的甲板”,“修补你的甲板应该用铁丝网完成......”

我试图最终得到这个:

keyword,destination_url,title,teaser_text

基于上述数据的示例输出:

  1. 鸡,关于/弗雷德,关于弗雷德 - 我们的总统,弗雷德是一个伟大的家伙,已经长达4年......
  2. 箱子,服务/修补_补丁,修补你的甲板,修补你的甲板应该用铁丝网完成...
  3. 我猜我需要做一些内外连接......我不善于写这些东西。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您无法获取该数据,因为url_alias不包含仅nid的pid。 JOIN可以在不同表格中的相似字段上进行。例如,我将从keyword_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;