2013-03-20 47 views
0

我建立一個簡單的社交網絡中,我有以下的架構(我不包括表中的所有領域,只是那些相關):複雜的SQL查詢用於社交網絡網站

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其中USER_ID =:身份證或friend_id =:ID

之後,我用的結果爲A項WHERE只獲取的問題。我無法得到答案,我爲每個答案做了SELECT。我的解決方案效率低下,無法擴展,我想爲我的問題找到更好的解決方案。

我也必須問這個......在這種情況下,noSQL會更好嗎?

+0

非常類似的問題,以http://stackoverflow.com/questions/2129693/mysql-using-limit-within-group-by-to-get-n-結果的每個組/ 2129703。最流行的答案鏈接到[這個非常好的教程](http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql /)。 – RandomSeed 2013-03-20 17:27:39

回答

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