MySQL如何在两个不同的数据库中加入两个表?

时间:2014-04-03 05:27:45

标签: php mysql sql database join

我有两个数据库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但问题无法连接第二个数据库。

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

4 个答案:

答案 0 :(得分:1)

这只是一个许可问题。

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

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

SHOW GRANTS FOR 'chinmay235'@'localhost';

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

答案 1 :(得分:0)

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

假设您在同一台服务器上有两个数据库--Db1和Db2。 Db1有一个名为Clients的表,其中包含ClientId列,Db2有一个名为Messages的表,其中包含ClientId列(让我们留意这些表在不同数据库中的原因)。

现在,要在上述表格上执行连接,您将使用此查询:

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

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

答案 2 :(得分:0)

连接两个表的语法

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

答案 3 :(得分:0)

查询似乎没问题,但您是否限制了desarrollo_forum db的选择权限?

尝试为这样的第二个db提供权限,

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