【问题标题】:MySQL How to join two table in two different database?MySQL 如何连接两个不同数据库中的两个表?
【发布时间】:2014-05-14 17:55:40
【问题描述】:

我有两个数据库chinmay235desarrollo_forum

我想使用 JOIN 查询连接两个表 nuke_follow_votessmf_members

nuke_follow_votes 表存在于chinmay235 中,smf_members 存在于desarrollo_forum 数据库中。

代码:

<?php
  $dbhost = "localhost";
  $dbuname = "chinmay_db";
  $dbpass = "2014@movie";
  $dbname = "chinmay235";

  mysql_connect($dbhost,$dbuname,$dbpass) or die(mysql_error());
  mysql_select_db($dbname) or die(mysql_error());

  $qry = mysql_query("SELECT a.* FROM chinmay235.nuke_follow_votes a LEFT JOIN desarrollo_forum.smf_members b ON a.user_id=b.id_member WHERE b.user_id IS NOT NULL;") or die(mysql_error());
  $res=mysql_fetch_row($qry);

  echo "Total Record = ".mysql_num_rows($qry);
?>

输出

SELECT command denied to user 'chinmay235'@'localhost' for table 'smf_members'

我已成功连接chinmay235并获取表nuke_follow_votes,但问题是无法连接第二个数据库。

请帮助我如何连接和加入这两个表并获取数据正确的数据。

【问题讨论】:

标签: php mysql sql database join


【解决方案1】:

这只是一个权限问题。

您的用户似乎无法选择数据库 desarrollo_forum 上的表。

使用以下命令检查您的用户的权限。

SHOW GRANTS FOR 'chinmay235'@'localhost';

您可以使用GRANT command 添加授权。

【讨论】:

  • 这里出现同样的错误信息。能否请您简要解释一下您的GRANTS 查询
  • 使用GRANT ALL PRIVILEGES ON desarrollo_forum.* TO chinmay235@host向用户授予完全权限;
  • 检查我发送的页面。那里有一些例子。链接:dev.mysql.com/doc/refman/5.1/en/grant.html
【解决方案2】:

MYSQL Server 允许您连接来自不同数据库的表,只要这些数据库位于同一服务器上。连接语法是一样的;唯一的区别是您必须完全指定表名。

假设您在同一台服务器上有两个数据库 - Db1 和 Db2。 Db1 有一个名为 Clients 的表,其中有一列 ClientId,而 Db2 有一个名为 Messages 的表,其中有一列 ClientId(让我们暂且不说为什么这些表位于不同的数据库中)。

现在,要对上述表执行连接,您将使用以下查询:

假设该帐户具有您可以使用的适当权限:

    SELECT ...
  FROM A.table t1
  JOIN B.table2 t2 ON t2.column = t1.col

【讨论】:

  • 当 OP 标记了 MySql 时,你为什么要回答 SQL Server?
【解决方案3】:

连接两个表的语法

SELECT <select_list> FROM Table A.A JOIN Table B.B ON A.key = B.key

根据您的要求,您可以使用 LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN、INNER JOIN

【讨论】:

  • 这适用于单个数据库。但我的要求是如何使用 Join 查询在两个不同的数据库中获取数据。请再次阅读我的问题..
  • SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 LEFT JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID
【解决方案4】:

查询看起来不错,但你是否限制了desarrollo_forum db的选择权限?

尝试像这样给第二个数据库特权,

GRANT ALL ON desarrollo_forum.* TO chinmay235@'localhost';
FLUSH PRIVILEGES;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    相关资源
    最近更新 更多