无法使任何MYSQL Join语句起作用

时间:2011-12-10 19:44:12

标签: mysql join

我甚至无法获得一个非常简单的Join语句。这是我的代码:

$query = "SELECT * FROM (Left) JOIN (Right) ON (Left.id=Right.id)";

$result = mysql_query($query);
$num_rows = mysql_num_rows($result);

echo "query: " . $query . "<br>result: " . $result . "<br>num rows: " . $num_rows;

以下是它的输出:

警告:mysql_num_rows():提供的参数不是第16行的xxxx \ join.php中的有效MySQL结果资源

查询:SELECT * FROM(左)JOIN(右)ON(Left.id = Right.id)

结果:

num rows:

我在一个拥有不同主机的网站上使用完全相同的代码并且工作正常,但我无法在这个上工作。我之前从未使用过Join语句,所以我不确定我是做错了什么,或者因为我的主机已经禁用了某些东西而导致它可能无法正常工作。我在这个网站上使用Ipower。

2 个答案:

答案 0 :(得分:0)

如果您的表名称是左和右(严重考虑重命名),则以下语法将起作用:

SELECT * FROM `Left` JOIN `Right` ON `Left`.id=`Right`.id

但是,我强烈建议重命名这些表,因为Left和Right是保留关键字,你将通过使用这些表名而不转义它们来遇到更多的语法问题。由于您使用Left / Right作为表名,因此当前编写的查询在语法上是不正确的。

我真的不确定你用这些括号做了什么。

(Left) JOIN (Right)

装置

LEFT JOIN RIGHT

这显然是胡说八道。你必须在JOIN条款中转义LEFT和RIGHT字样。

答案 1 :(得分:-2)

您可以尝试在“加入”之前添加“内部”。

这将是我的第一个猜测 - 理由 - 它实际上是一个内部联接。

第二个猜测是重写如下。

SELECT *  FROM(左),(右) 其中Left.id = Right.id

完全从SQL中删除join关键字。

猜测'join'关键字会导致问题。