ユーザーがすでに関心を示しているアイテムに基づいてアイテムを提案するために実行する必要がある 4 つのクエリがあります。
ユーザーがすでに気に入っているアイテムをランダムに 5 つ選択します
SELECT item_id
FROM user_items
WHERE user_id = :user_person
ORDER BY RAND()
LIMIT 5
同じアイテムが好きな人を50人選ぶ
SELECT user_id
FROM user_items
WHERE user_id != :user_person
AND item_id = :selected_item_list
LIMIT 50
元のユーザーが好きなすべてのアイテムを選択します
SELECT item_id
FROM user_items
WHERE user_id = :user_person
ユーザーがまだユーザーに提案したくないアイテムを 5 つ選択します
SELECT item_id
FROM user_items
WHERE user_id = :user_id_list
AND item_id != :item_id_list
LIMIT 5
私が知りたいのは、これを 1 つのクエリとして実行する方法です。
私がこれをやりたい理由はいくつかあります:
- 現時点では、「select 50 people」クエリを 5 回実行し、上位 50 人を選択する必要があります。
- 次に、「select 5 items」クエリ 50 * (最初のユーザーが気に入ったアイテムの数) を実行する必要があります。
クエリが実行されたら、クエリ結果を Cookie に保存するつもりです (ユーザーが Cookie の使用に同意した場合、そうでない場合は「アイテムの提案」をまったく取得しません)。つまり、1 日に 1 回、または 1 週間に 1 回だけ起動します (そのため、5 つの提案を返し、表示するキーをランダムに選択します)
基本的に、これらのクエリを 1 つのクエリとして記述する方法を知っている人がいたら、クエリで何が起こっているのかを説明してもらえますか?