我正在建立一个简单的社交网络,我有以下架构(我没有包括表格中的所有字段,只包括相关的字段):
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会更好吗?
答案 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