2012-01-04 18 views
0

このクエリには何か問題がありますか?ジョインでRand()を使用できますか?mysqlクエリの問題

$sql_result = mysql_query(" 
    SELECT p.name as propname, p.city, p.id, m.name, m.overall_XP 
    FROM properties p INNER JOIN mobsters m ON p.owner = m.id 
    WHERE p.owner != '$id' AND m.level > '100' 
    AND m.gang != '$gang_id' ORDER BY RAND() LIMIT 0, 1", $db); 
+0

CodeReview([codereview.stackexchange.com](http://codereview.stackexchange.com/))に掲載することを検討してください。 – Tadeck

+2

MySQLでは、** 'ORDER BY RAND()' **を使用することは、しばしば非常に悪い考えであることに注意してください... [件名に関する記事](http://www.paperplanes.de/2008) /4/24/mysql_nonos_order_by_rand.html)。 – rdlowrey

答えて

0

あなたはするmysql_queryをエコーし​​ようとする必要があります:

echo "SELECT p.name as propname, p.city, p.id, m.name, m.overall_XP FROM properties p INNER JOIN mobsters m ON p.owner = m.id WHERE p.owner != '$id' AND m.level > '100' AND m.gang != '$gang_id' ORDER BY RAND() LIMIT 0, 1"; 
exit; 

そして、すべての問題/エラーがあるかどうかを確認するためのphpMyAdminに貼り付けます。

0

私はあなたの問題は論理的だと思う、それはあなたの質問の構造にある私は間違って表示されません。正しい結合フィールドを使用しているか、結果が間違って限定されていないことを確認していますか?

2

試しましたか? 「あなたの質問がYであり、エラーXが発生しています。何が間違っているのですか?」といった質問を投稿すると、最高の回答が得られます。

あなたの質問に答えて、多くの人が、MySQLでこれと同じようにRAND()を使用することを推奨しています。なぜなら、MySQLは結果セットの各行に乱数を適用するからです。結果セットが大きくなるにつれて、すぐにパフォーマンスを上げることができます。 (PHPで実装できる)回避策が1つあります。here

+0

+1のrand()パフォーマンス –