MySQL双查询情况

时间:2009-05-13 14:24:24

标签: sql mysql

还有其他方法可以执行此查询吗?

 $query = "SELECT * FROM produto, pt WHERE
        produto.refPT = pt.ref AND
        produto.refPT IN (SELECT idProduto FROM amb_prod WHERE idAmbiente='1');";
    $result_set = mysql_query($query);

问题是我的localhost有MySQL版本5.1.30-community,但我的在线服务器有5.0.67社区的MySQL版本。

我认为只有当我尝试在在线服务器上运行时才会出现此错误的原因:

mysql_fetch_array(): supplied argument is not a valid MySQL result resource 

4 个答案:

答案 0 :(得分:1)

当您创建查看的精美视图时,它可以让您的工作更轻松,例如:

$query = "SELECT *
          FROM produto, pt, amb_prod 
          WHERE produto.refPT = pt.ref
          AND produto.refPT = amb_prod.idProduto 
          WHERE amb_prod.idAmbiente='1';";
$result_set = mysql_query($query);

答案 1 :(得分:0)

嗯,在测试系统上安装匹配版本的MySQL会很有意义,因此您可以更轻松地调试错误。

您也可以尝试这样的事情......

$query = "SELECT * FROM produto, pt, amb_prod WHERE
    produto.refPT = pt.ref AND
    produto.refPT = amb_prod.idProduto WHERE amb_prod.idAmbiente='1');";
$result_set = mysql_query($query);

答案 2 :(得分:0)

至少为了简化您的查询,您可以使用:

"Select * from produto,pt,amb_prod WHERE
       produto.refPT = pt.ref AND
       produto.refPT=amb_prod.idproduto AND
       amb_prod.idAmbiente='1';"

虽然我建议选择字段而不是“*”。我也不得不想知道为什么你引用'1',那不是数字字段吗?

答案 3 :(得分:0)

最后摆脱分号,看看是否有帮助。

在某些桥接实现(将您的语言连接到MySQL服务器的事物)上,您的查询字符串实际上是两个查询:

SELECT * 
FROM produto, pt 
WHERE
 produto.refPT = pt.ref AND
 produto.refPT IN (SELECT idProduto 
                   FROM amb_prod 
                   WHERE idAmbiente='1')

和...

[Blank]

某些网桥可能会混淆要返回的结果集(SQL结果或空白查询)以及空白查询是否可接受。