社交网络网站的复杂sql查询

时间:2013-03-20 16:35:21

标签: mysql sql join

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

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 OR friend_id =:id

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

我也要问这个问题......在这种情况下,没有SQL会更好吗?

1 个答案:

答案 0 :(得分: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