2012-02-25 2 views
1

목표 : 회원 벽 에서별난 소셜 네트워크 벽 코드 로직

풀 - 두 친구가 같은 churchMember 관계를 공유하는 경우, 쇼

풀 다음 표 스트림 :

  • 친구
  • wallPosts
  • 사용자
  • churchMember 의

테이블 구조 :

친구 테이블 :

- id, node1id, node2id 

wallPosts :

- entryData 
- postingUserId 

사용자 :

- userpid 
- username 
- firstname 
- lastname 

쿠어 채널 구성원 :

- churchid 
- userid 

위의 요구 사항을 코드에 어떻게 넣을 수 있습니까?

는 업데이트 :

사용자가 $churchId = '1';

SELECT * FROM churchMembers WHERE cMchurchId = $churchId 
if $row-cMchurchId == $churchId 
    SELECT * FROM churchMembers, users WHERE churchMembers.cMuserId = users.userid 
+1

당신은 codeigniter라고 태그를 붙였습니다. 시도한 것을보기 위해 우리에게 보여줄 수있는 코드가 있습니까? – mindandmedia

+0

오케이. 나는 그것을 새롭게했다. 나는 주변을 어지럽히고 있었다. 그것은 실제적인 것이 아닌 약간의 의사 코드입니다. 첫 번째 SQL 문에서 그것을 얻은 것 같아요하지만 cMchurchId $ $ churchId 일치하는 교회 관계와 관련된 사용자 테이블에서 데이터를 가져올 수 있어야합니다. cMuserId는 churchMember 행으로 사용자를 식별합니다. 또한 모든 사용자에 대해 cMchurchId = $ churchId가 true 인 경우 wallPosts의 모든 행을 표시해야합니다. 당신이 말할 수있는 것처럼 복잡합니다. –

+0

조인에 대해 알고 있습니까? http://www.tizag.com/mysqlTutorial/mysqljoins.php – mindandmedia

답변

1

와 연결되어 로그인 한 것과 같은 churchId이있는 모든 행을 선택이 가야 당신은 시작 :

$friendId = 5; 

$sql = "select w.entryData from wallposts w 
     inner join church_members cm 
      on cm.userid = w.postingUserId 
     where cm.churchid = 
      (SELECT churchid from church_members where userId='" + $friendId + "'"); 

친구 목록에있는 사용자 ID는 다음과 같습니다.

select w.entryData from friends f 
inner join church_members cm on f.node2id = cm.userid //<--friends church 
inner join church_members cm2 on f.node1id = cm2.userid //<-- my church 
inner join wallposts w on w.postingUserId = f.node2Id //<-- grab the friends wallposts 
inner join users u on f.node2id = u.userpid //<-- grab the user data 
where cm2.church_id = cm.church_id //<-- they got's to be the same :) 
+0

죄송합니다. 저는이 LOL에 익숙하지 않으므로, 'on cm.node2id = users.userpid'에서 INNER JOIN을 추가하거나 어디에 추가해야합니까? –

+0

답변에 추가했습니다. – mindandmedia