0

こんにちは、私は、mysql テーブルからすべてのデータを取得する必要があるプロジェクトに取り組んでいます。ここで、電子メールが配列内のいずれかの電子メールと一致する場合..配列は別のテーブルによって生成されます..現在、私のコードは..

$selectfrnds=mysql_query("select sender_id,receiver_id from fk_friends where   (sender_id='$email' or receiver_id='$email') and friendtofriend='freq' ");
while($myallfriends=mysql_fetch_array($selectfrnds)){


                        $friendis=$myallfriends['sender_id'];

                $detailsoffriend=mysql_query("select * from fk_views where (email='$friendis' or onprf_of='$friendis') and (views !='' or uploadpic !='') order by id asc  ");
                while($selecteddatais=mysql_fetch_array($detailsoffriend)){


//displaying the posts here ...
}}

ここでの問題は、このコードがグループ化を引き起こすことです。つまり、あるメールのすべての投稿を取得してから、別のメールのすべての投稿を取得するということです。しかし、データベースのように取得したいのですが、グループ化はしたくありません..

$email はセッション中のメールです。

助けてください.....

4

1 に答える 1

0

データベースに何度もアクセスするのではなく、1 回のクエリで取得するようにしてください。クエリは次のようになります

SELECT v.* 
  FROM fk_views v JOIN fk_friends f
    ON (v.email = f.sender_id OR v.onprf_of = f.sender_id)
 WHERE (f.sender_id = '$email' OR f.receiver_id = '$email') 
   AND f.friendtofriend = 'freq'
   AND (v.views !='' OR v.uploadpic !='') 
-- GROUP BY v.id -- it's unclear without seeing your schema and sample data but you might need GROUP BY to eliminate duplicates
 ORDER BY v.id
于 2013-08-11T07:03:22.153 に答える