2009-05-13 10 views
0

このクエリを実行する別の方法はありますか?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コミュニティがありますが、私のオンラインサーバーには5.0.67コミュニティMySQLバージョンがあります。

そして私は、私はオンラインサーバー上で実行しようとする場合にのみ、私はこのエラーを取得する理由ということだと思う:

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

mysql_error()の出力を確認します。この出力には、クエリのどの部分が誤っているか、本番環境で実行されているバージョンと互換性がないかを確認するのに十分な情報が含まれている可能性があります。 – Rob

+0

このクエリをクライアントで確認しましたか? (例:phpMyAdmin) – NinethSense

+0

NinethSenseの問題が解決しました。バージョン5.1.30では大文字と小文字が区別されないため、エラーは返されませんでした。 – Bonfocchi

答えて

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); 
+0

重複した回答はすべて何ですか?これは、正確なことを言う#3です。無関係な書式を修正するだけですか(また、私はあなたがmysqlのビューについて話していると思いました)? –

0

がよく、それは、MySQLの一致するバージョンをインストールするには多くの意味になるだろうあなたのテストシステムでは、エラーをより簡単にデバッグすることができます。私は、「フィールドを選択するのではなくお勧めしますが、

"Select * from produto,pt,amb_prod WHERE 
     produto.refPT = pt.ref AND 
     produto.refPT=amb_prod.idproduto AND 
     amb_prod.idAmbiente='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); 
+0

クエリには2つのWHEREキーワードが含まれています。最後のものをANDで置き換えます。また、余分な) –

0

を試みることができる

、あなたが行くことができます* "。私はなぜあなたが '1'を引用しているのか疑問に思っているのですが、数値フィールドではありませんか?

0

終わりにセミコロンを取り除くと、それが助けかどうかを確認しなさい。

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

そして...

[Blank] 

いくつかの橋があります。いくつかの橋の実装(MySQLサーバにあなたの言語を接続するもの)で

、クエリ文字列は、実際には2つのクエリですどちらの結果セットが返されるか(SQLまたは空の照会の結果)と、空の照会が受け入れ可能かどうかについて混乱します。