0

2つの別々のテーブルがある場合、SQLクエリをどのように設計するのか疑問に思っていますが、一緒に機能する必要があります...

likesテーブル

-idlikes、idusers、like_what


user_followテーブル

-idfollow、follower、following


最適化/パフォーマンスのためのクエリを設計するための最良の方法は何ですか?クエリを組み合わせることができますか?または、次のように各クエリを分離することになっていますか?

$iduser = 1 //I am user 1 in database.

$get = $db -> prepare("SELECT * FROM user_follow WHERE follower = ?")
$get -> execute(array($iduser));
while($row = $get->fetch(PDO::FETCH_ASSOC)){
     $following = $row['following']; // get id of user that i'm following

     $likes = $dbh->prepare("SELECT * FROM likes WHERE idusers = ?");
     $likes->execute(array($following));
     // do what I need to..

}

アップデート

$following = $dbh->prepare("SELECT L.* FROM likes L JOIN user_follow F on L.iduser = F.iduser_following WHERE F.iduser_follower = ?");
$following->execute(array($iduser));

while($row_following = $following->fetch(PDO::FETCH_ASSOC))
{
  $id1 = $row_following['L.iduser'];
  echo $id1;
}
4

1 に答える 1

1

これは1つのクエリでそれを行います

SELECT L.*
FROM likes L
JOIN user_follow F ON L.idusers = F.following
WHERE F.follower = ?

命名に関する注意:SQLでは、各行に1つの値が含まれているため、通常、列名は単数です。したがってlikes.idusers、通常はlikes.iduser

また、iduserのFKであるかどうかも明確にするため、user_followテーブルでfollowerasiduser_followerおよびfollowingasという名前を付けます。isuser_following

于 2013-02-02T00:39:12.690 に答える