【问题标题】:Prepared Statement with inner join, on multiple databases at the same time带有内部连接的预处理语句,同时在多个数据库上
【发布时间】:2015-07-22 16:29:42
【问题描述】:

我确信这个问题已经得到解答,如果有,我想知道在哪里。

数据库
我有两个数据库“Conn”和“Conn2”

Conn host a table called Account.
Account has 2 columns: User_Key,Username


Conn2 has a table called Miles 
Miles has 3 Columns: Miles_Key,Miles_User_Key, Miles_Amount


我想做的是创建一个排行榜。

我想从 Conn2 中提取 Miles_Amount 并使用 SUM 函数来获取总值。在使用 INNER JOIN ON Miles_User_Key = User_Key 从 Conn 获取用户名时。

我可以用单个数据库完成这一切,但我不知道如何用双数据库做到这一点。

$LB_User_Query = "  SELECT Miles_User_Key, Username, SUM(Miles_Amount) AS 'Miles' 
                    FROM Miles 
                    INNER JOIN Account
                         ON Account_Stats.Account_Stats_Account_Key = Miles.Miles_User 
                    GROUP BY Miles.Miles_User 
                    ORDER BY Miles Desc";
$LB_User_stmt = $Conn->prepare($LB_User_Query);
$LB_User_stmt->execute();                           
$LB_User_stmt->bind_result($Miles_User_Key, $Username, $Miles);

顺便说一句,如果您想知道为什么帐户和里程位于两个单独的数据库中,那是因为我们有两个不同的站点,每个站点都使用相同的帐户。

【问题讨论】:

  • 我相信您需要一个联合数据库引擎来完成您的要求。
  • 您不能跨不同的连接加入。没办法,没办法。

标签: php mysql database prepared-statement inner-join


【解决方案1】:

要从单独的数据库中提取数据,只需在表名前加上数据库名即可。所以不用Account,你可以用Conn.Account,不用Miles,你可以用Conn2.Miles

【讨论】:

  • 哦,太棒了。我会尝试一下。我在想这是类似的事情,我只是需要澄清一下。所以我会假设类似 database.table.column?
  • 查询的准备部分怎么样,那里有什么需要改变的吗?
【解决方案2】:

好的,因为显然不可能将两个单独的数据库连接链接到一个查询。我在 $conn 连接上设置了一个表以将用户名推送到其中,因此当我只使用一个数据库连接运行此查询时,我可以将其拉出。

【讨论】:

    猜你喜欢
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多