我一直在尝试解决这个问题,但是我总是收到错误消息或挂起的查询。基本上,我有两个数据库查询(每个数据库一个),我需要将第一个查询的结果合并到第二个查询中,还要在第一个查询中使用第二个查询的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
我尝试了内部连接,但是我要么不知道自己在做什么,要么查询太多,因为我尝试的一些变化会一直挂到死掉。
任何帮助将不胜感激!
答案 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)
我认为您可以创建一个新表并同时使用两个数据库,选择所需的列并将其插入到新表中,这样您就可以轻松读取该表。