组合来自不同数据库的2个MySQL查询

时间:2018-10-17 11:48:07

标签: mysql

我一直在尝试解决这个问题,但是我总是收到错误消息或挂起的查询。基本上,我有两个数据库查询(每个数据库一个),我需要将第一个查询的结果合并到第二个查询中,还要在第一个查询中使用第二个查询的ID ...令人困惑!

第一个是简单的查询。获得批准的主题数并将其设置为“ commentnumber”。如您在 WHERE 子句中所见:它需要使用 a.ID ,该ID来自第二次查询

数据库1

(SELECT (t.topic_posts_approved - 1) 
    FROM forum.bb_topics t, forum.bb_xpost xp
    WHERE xp.wp_id = a.ID
    AND t.topic_id = xp.topic_id) as 'commentnumber'

这是我创建的查询,用于获取3个wordpress帖子并按“权重”对其进行排序。如果我从第一个查询中删除“ 评论号”,则显然可以正常工作。

数据库2

SELECT a.post_author, a.id, b.pageviews, a.post_title, a.guid, c.meta_value,  (b.pageviews * (c.meta_value + (commentnumber * 1.25))) AS 'weight'
FROM wordpress.wp_posts a, wordpress.wp_poppodyd b, wordpress.wp_postmeta c 
WHERE a.ID = b.postid and (a.ID = c.post_id)
AND c.meta_key = 'thumbs_up' 
AND (b.day >= NOW() - INTERVAL 2 DAY)
GROUP BY a.post_author
ORDER BY weight DESC
LIMIT 3

我尝试了内部连接,但是我要么不知道自己在做什么,要么查询太多,因为我尝试的一些变化会一直挂到死掉。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

我坐了几个小时后才发现。

正如人们所说的那样,使用 database.table.column名称 是关键。

这是我在一个查询中的最终结果:

SELECT a.post_author, a.id, b.pageviews, a.post_title, a.guid, c.meta_value, t.topic_posts_approved, (b.pageviews * (c.meta_value + (t.topic_posts_approved * 1.25))) AS 'weight'
FROM wordpressdb.wp_posts a, wordpressdb.wp_poppodyd b, wordpressdb.wp_postmeta c, forumdb.bb_topics t, forumdb.bb_xpost xp
WHERE a.ID = b.postid and (a.ID = c.post_id) and (a.ID = xp.wp_id) and (t.topic_id = xp.topic_id)
AND c.meta_key = 'thumbs_up' 
AND (b.day >= NOW() - INTERVAL 2 DAY)
GROUP BY a.post_author
ORDER BY weight DESC
LIMIT 3

答案 1 :(得分:0)

我认为您可以创建一个新表并同时使用两个数据库,选择所需的列并将其插入到新表中,这样您就可以轻松读取该表。