0

我正在构建一个简单的社交网络,其中包含以下架构(我没有包含表中的所有字段,仅包含相关字段):

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 个查询来做到这一点:第一个查询找到我所有的朋友 SELECT id FROM tbl_friends WHERE user_id=:id ORfriend_id=:id

之后,我将结果用于 WHERE IN 子句来仅获取问题。我无法得到答案,我为每个答案做了一个选择。我的解决方案效率低下且不可扩展,我想为我的问题找到更好的解决方案。

我也不得不问这个......在这种情况下noSQL会更好吗?

4

1 回答 1

0

你可以尝试一些像:

SELECT <there JOIN between user, friends and questions>
  LEFT JOIN 
    (SELECT question_id, body 
      FROM tbl_answers 
      WHERE question_id = tbl_questions.id 
      LIMIT 3
    ) AS Answers3
    ON Answers3.question_id = tbl_questions.id
于 2013-03-20T16:51:13.503 回答