次のスキーマを持つ単純なソーシャルネットワークを構築しています(テーブルにすべてのフィールドを含めたわけではなく、関連するものだけを含めました):
tbl_users:
id
username
tbl_friends:
user_id FK tbl_users.id
friend_id FK tbl_users.id
tbl_questions:
id
user_id
title
date_created
tbl_answers:
id
question_id
body
私が欲しいのは、ユーザーの友達に属するすべての質問を、各質問の回答が 3 つに制限されている状態で取得することです。結果には、効率化するための制限があります。たとえば、友人が最後に追加した 5 つの質問を考えてみましょう。誰かがこれを手伝ってくれるなら、スケーラブルなソリューションが欲しいです。私は2つのクエリでこれを行うことができました.1番目のクエリはすべての友達を見つけます SELECT id FROM tbl_friends WHERE user_id=:id OR friend_id=:id
その後、WHERE IN 句の結果を使用して、質問のみを取得しました。答えを得ることができませんでした。それぞれの答えに対して SELECT を作成しました。私のソリューションは非効率的でスケーラブルではありません。私の問題に対するより良い解決策を見つけたいと思っています。
私もこれを尋ねなければなりません...この状況ではnoSQLの方が良いでしょうか?