mysqlクエリに関する質問があります。私はそれをシンプルかつ迅速にするように努めます(そして私はフランス語を話すので理解しやすいです)これはStackOverFlowへの私の最初の投稿です。
私はphpとmysqlに慣れていないので、phpとmysqlを使用するiOSアプリケーションを作成しています。ここでは、この例で2つの異なるテーブルを使用しています。
-以下を含むUtilisateurs(フランス語のユーザー):
- 名前
- image_name(サーバー上のprofileImageへの参照)
- この例で使用していないその他のフィールド
-フォロワー、含む:
- user_name(静かな明示的)
- follow(このフィールドには、user_nameがフォローするユーザーの名前が含まれます
これが完全に機能するクエリです
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db(db, $con);
// By this request I select the users that my current user ($_GET['userName']) follows
$result = mysql_query('SELECT user_name, follows FROM Followers WHERE user_name = "'.$_GET['userName'].'"');
while($row = mysql_fetch_array($result)){
//When I find a user that my current user follows, I select his name and the name of the user(s) that user has followed less than 2 days ago
$user = $row['follows'];
$res = mysql_query('SELECT user_name, follows, followed_on FROM Followers WHERE user_name = "'.$user.'" AND TO_DAYS(NOW()) - TO_DAYS(followed_on) <= 2');
// Now when I find a user that is followed by the user that my current user follows, I select the profile image linked to his profile
while($follow = mysql_fetch_array($res)){
$img = mysql_query('SELECT image_name FROM Utilisateurs WHERE name = "'.$follow['follows'].'"');
if(mysql_num_rows($img) != 0){
//And here I echo differents results if a profileImage has been found or not
$imgProfile = mysql_fetch_row($img);
echo $follow['user_name'].'$'.$follow['follows'].'$'.$imgProfile[0].'#';
}else{
echo $follow['user_name'].'$'.$follow['follows'].'$ #';
}
}
}
たとえば、$ _ GET ['username']のuserNameとして「benben」(現在のユーザー)を使用してこのクエリを実行すると、すべてが完全に機能します。これが、Webブラウザで取得した結果です。
Simon $ Seba $#Simon $ Seb $#Simon $ benben $ 307233348488807.jpg#
ここで私はそれを見ることができます:
- サイモンはセバをフォローしています
- サイモンはセブをフォローしています
- Simonは、image_nameが307233348488807.jpgであるbenben(私)をフォローしています。
これらすべてをiOSアプリケーションの配列に配置すると、すべてが正しく表示され、正常に動作します。
しかし、他の多くのユーザーをフォローしている多くのユーザーをフォローしている場合、それは多くのクエリです。さらに、多くのユーザーが同時にこれを行っている場合はさらに悪化します。
したがって、実行するクエリを減らすためにいくつかのJOINSを実行する必要があると思いますが、phpとmysqlは初めてなので、その方法がわかりません。これよりも単純なクエリですでにいくつかのJOINSを実行しましたが、これは混乱を招きます。
ですから、誰かが私にアドバイスをくれたり、JOINSでこのリクエストを実行するのを手伝ってくれるなら、それは大いにありがたいです:)