需要帮助查询两个数据库(第一次尝试这样做)

时间:2010-11-26 22:45:30

标签: php mysql

我有两个需要使用的数据库,db_site和db_forum(这些是通用名称,FYI)。

db_site有一个名为main-news的表,其中有一个 forumurl 字段,其中包含一个论坛帖子ID和一个 views 字段,其中包含文章条目的当前综合浏览量在数据库中。 db_forum有一个名为forum_threads的表,其中包含 tid 字段和回复字段。

我有两件事我需要做,一个只使用回复,另一个使用回复和视图。我假设一旦前者被弄清楚,后者不会比添加一些额外的部分多,所以我暂时关注前者。

由于两个表位于不同的数据库中,因此不确定如何处理此问题。我正在使用的登录可以访问它们(AFAIK),所以这不是问题,它更多的是涉及的语法。我想要做的事情可能是这样吗?

SELECT
    db_forum.forum_threads.replies AS replies
FROM
    `db_forum.forum_threads` AS f,
    `db_site.main-news` AS s
WHERE
    f.tid = s.forumurl

这是一个粗略的猜测,我可以在网上找到这种类型的查询。任何帮助表示赞赏。 :)

2 个答案:

答案 0 :(得分:2)

首先,您应该正确缩进SQL代码。这条长线几乎不可读。

SELECT
    db_forum.forum_threads.replies AS replies
FROM
    `db_forum.forum_threads` AS f,
    `db_site.main-news` AS s
WHERE
    f.tid = s.forumurl

然后,使用表别名“f”和“s”。你介绍了它们,所以你必须使用它们:

SELECT
    f.replies AS replies
FROM
    `db_forum.forum_threads` AS f,
    `db_site.main-news` AS s
WHERE
    f.tid = s.forumurl

最后,你应该删除不必要的引用:

SELECT
    f.replies AS replies
FROM
    db_forum.forum_threads AS f,
    db_site.main-news AS s
WHERE
    f.tid = s.forumurl

答案 1 :(得分:0)

如果字段的名称表示其功能,则f.tid表示标识列,而s.forumurl则不表示。通常,在这种情况下,s.formurl将是外键。只是一个猜测。