当前位置:  开发笔记 > 编程语言 > 正文

在MySQL中查询时连接表

如何解决《在MySQL中查询时连接表》经验,为你挑选了0个好方法。

我有3个表:tco_articles,tco_module_eostexttco_articles_modules.我tco_articles有独特的id钥匙.每篇文章一篇.我的tco_module_eostext独特之处instance_id属于每篇文章.我tco_articles_modules包含了所有的article_ids,但是instance_id在其他表中使用了9倍.

在此输入图像描述

所以我可以article_idinstance_id,当你在查询中tco_module_eostext会返回空.

我想创建一个查询,返回正确文章的正确正文.

到目前为止,我有:

global $wpdb;
$posts = array();

$ids = $wpdb->get_results('SELECT DISTINCT instance_id, article_id FROM tco_articles_modules', ARRAY_A);

这将返回包含所有实例和ID的数组,如:

Array
(
    [0] => Array
        (
            [instance_id] => 928615
            [article_id] => 129396
        )

    [1] => Array
        (
            [instance_id] => 928616
            [article_id] => 129396
        )

    [2] => Array
        (
            [instance_id] => 928617
            [article_id] => 129396
        )

    [3] => Array
        (
            [instance_id] => 928618
            [article_id] => 129396
        )

你可以看到article_ids是相同的但是instance_id.当你放

$wpdb->get_results('SELECT body FROM tco_module_eostext WHERE instance_id=928617 ', ARRAY_A);

你可能会变空,但是

$wpdb->get_results('SELECT body FROM tco_module_eostext WHERE instance_id=928618 ', ARRAY_A);

你可以有一些正文.

这是我的问题.我需要仔细检查所有这些并过滤掉非空的并为它们分配正确的文章.我设法输出文章

foreach ($ids as $key => $value) {
    $instance_ID = $value['instance_id'];
    $article_ID = $value['article_id'];

    $article_out = $wpdb->get_results('SELECT * FROM tco_articles WHERE id='.$article_ID.' ', ARRAY_A);
    $posts[$article_ID] = $article_out[0];

}

返回的内容如下:

Array
(
    [129396] => Array
        (
            [id] => 129396
            [headline] => Bla bla bla title
            [intro] => This is cool article intro
            [needs_review] => 0
            [published] => 2014-12-16 09:17:00
            [unpublished] => 
            [hidden] => 0
            [no_single_page] => 0
            [permalink] => link-perma-link-here
            [internal_slug] => 
            [type_id] => 3
            [thread_id] => 0
            [news_id] => 0
            [header_game_id] => 0
            [puff_hh_id] => 0
            [puff_title] => 
            [hdrcol_id] => 900
            [review_queued] => 
            [lock_timeout] => 0
            [created] => 2014-12-16 09:17:00
            [updated] => 2015-01-16 13:51:30
            [created_by] => 84142
            [updated_by] => 84142
        )
    ...

现在我想bodytco_module_eostext表中附加文本.

是否有一个查询我可以用来自动执行此操作或者当时执行此操作然后追加到$posts数组?

当你有180000+帖子时,查询的foreach方法有点慢.

任何帮助表示赞赏.

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有