2014-12-29 4 views
-1

나는 소셜 네트워킹 플랫폼을 만들고 있습니다. 그리고 나는 방금 사용자의 게시물을 필터링하는 방법을 알고 싶었습니다.친구의 소식을 받으십시오

현재, 내가 게시물을 필터링하고있는 방법은 모든 게시물을 선택하지만, 다소 다음과 같이 사용자의 firend에서들만 게시물 보여주는 것입니다 : 가정

$select = $con->query("SELECT * FROM posts ORDER BY timestamp DESC"); 


while($postassoc = $con->fetch_assoc()){ 


$postby = $postassoc['user']; 
$friendof = $con->query("SELECT id FROM friends WHERE 'from'='$user' AND 'to' ='$postby' OR 'to'='$postby' AND 'from'='$user' AND 'auth'='1'"); 
If($friendof != 0){ 
//show post 
} 

} 

에 오류가없는을,이 방법은 걸릴 것입니다 장기적으로 많은 시간을 필요로합니다. 더 좋고 효율적인 방법이 있습니까?

답변

1

은 다음과 같이 당신에게 지금

id user_id post_content post_date 
1  35  hbsdhdhs  25-Dec 

게시물 : 친구

id user_id friend_id 
1 22  35 

지금 귀하의 게시물 테이블이 테이블처럼 될 수있다 친구의 게시물을 필터링하기 위해 조인을 사용할 수 있습니다.

$select = $con->query("SELECT posts.post_content FROM posts join friends on posts.user_id=friends.friend_id and friends.user_id =22"); 
+0

고마워요! 하지만 조인 기능이 완전히 새롭기 때문에 쿼리를 설명/정교하게 설명 할 수 있습니까? –

0

그건 입니다. 매우 비효율적입니다. 소셜 네트워킹 사이트의 모든 단일 게시물을 검토 할 예정입니까? 10 억 명의 사용자가 있다면 어떻게 될까요?

당신은 모든 친구를 통해 반복하고, 가장 관련성이 높은 사람들을 끌어 당긴 다음 자신의 활동을 표시하는 것이 좋습니다. 소셜 네트워킹 사이트는 관련성 측면에서 친구를 주문합니다. (당신은 '채팅'측면 패널에 효과에서 볼 수 있습니다 -. 당신의 가장 친한 친구가 상단까지 될 것

사용자를 일단 활동을 찾는 구현이 더이 사이트에 설명되어 있습니다, 예를 들어 https://stackoverflow.com/a/205477/1752129

테이블 : 당신의 친구 테이블 가정
+0

나는 그것이 비효율적이며 그것이 내가 묻는 이유입니다. –

관련 문제