2013-08-21 2 views
0

그래서 나는 두 테이블의 설정을 가지고 :Select 문

========================= 
|  Shares   | 
========================= 
| user_id | other stuff | 
========================= 
| 1  | bla bla bla | 
| 2  | bla bla bla | 
========================= 

===================================== 
|    Followers    | 
===================================== 
| id | follower_id | following_id | 
===================================== 
| 1 | 7   | 1   | 
| 2 | 7   | 2   | 
===================================== 

내가하고 싶은 것은 "주"를 표시하는 피드를 만드는 것입니다,하지만 사람들을 위해 당신이 다음되는 . 이상적으로 나는 하나의 쿼리로 이것을하고 싶다.

여기 내가 시도한 (분명히 잘못된) 것. 이 예의 경우, user_id가 현재 사용자 (또는 추종자)의 ID라고 가정합니다.

select * from shares where count(select * from followers where follower_id = :user_id and following_id = share.id) > 0 

답변

2

당신이 좋아하는 뭔가를 테이블에 가입 할 수 있습니다 다음 암시 구문에 가입하고 많은 사람들이 명시 적 변형을 선호하지만이 간단한 경우에 정말 필요가 없습니다 사용하고

select s.* from shares s, followers f 
where f.follower_id = :user_id 
    and s.user_id = f.following_id 

.

+1

나는's.user_id = f.following_id' –

+1

@ 491243이 맞다고 생각하고, user_id 검사에 추가했다. 아마도 다음번에 내 질문에 대한 답을 구하기 전에 전체 질문을 읽을 것입니다 :-) – paxdiablo

+0

Beauty - thanks. –