0

これが私のphp/MySQLタスクです:

主キーであるフィールドと、投稿に関するその他の情報フィールド ( 、など)POSTSを含むテーブルがあります。主キーであるフィールドと のフィールドに対応するフィールドを含むテーブルもあります。特定のを指定すると、userId が「好き」なテーブルからすべての行を取得する必要があります。numauthortitleLIKEuserIdPOSTnumpostsuserIDPOSTS

表 1 - ポスト


-番号 -著者-
タイトル

表 2 - いいね

-userId
-postId


これはすべてphpであるため、最初のアイデアは、指定されたものと一致するLIKESテーブルからすべての行を取得し、それらの行を配列に格納することでした。userId次に、配列を反復処理し、行ごとに検索してPOSTStableの行を取得しますwhere postId=POSTS.num。ただし、特に配列を介した各反復が個別の mysql クエリになるため、これはかなり遅くなるようです。

もっと速い方法があると思います。一時テーブルを使用するか、テーブルを結合するためのより良い方法はありますか? 両方のテーブルに多くの行が含まれていると想定する必要があります。私は mysql の初心者です。より良い解決策があれば、その理由を説明してください。助けてくれてありがとう!

4

2 に答える 2

0
SELECT poli.* FROM (
SELECT po.* FROM posts po 
JOIN likes li
ON li.postId = po.num
WHERE li.userId = '$yourGivenUserId'
) AS poli

$yourGivenUserId は、指定された userId です。

于 2012-12-25T22:20:53.413 に答える