我有两个数据库chinmay235
和desarrollo_forum
我想使用JOIN查询加入两个表nuke_follow_votes
和smf_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
但问题无法连接第二个数据库。
请帮助我如何连接和加入这两个表并获取正确的数据。
答案 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;