2012-01-08 4 views
1

나는 뉴스 피드를 만들려고 노력하고있다. 의 내가 테이블 friends라는 일부 데이터이 MySQL의 테이블이 있다고 가정 해 봅시다 :MySQL 멀티 ID 찾기

과의 내가 friendsuidfriend_1 또는 friend_2로, 테이블 status

라는 상태에 대한 그리고 예를 들어 내 사용자 ID corrolates을이 있다고 가정 해 봅시다 status입니다. 내가 가지고있는 친구가 friends에서 어떤 행을 가지고 있는지를 알기 위해 MySQL의 쿼리는 어떤 것이 있습니까? status에 데이터 행이 있습니까?

+0

의사 Y 필요하지 않습니다 : SELECT * status.uid – mhps

+0

이드 난 친구 당신의 모델에서 약간 혼란 스럽습니다. 사용자 ID는 어디에서 적합합니까? 어떤 테이블에도 사용자 ID가 표시되지 않습니다. "친구"에 대한 ID입니까? – xQbert

답변

2
SELECT status.* 
FROM status, friends 
WHERE (friend_2 = uid AND friend_1 = <your_id>) 
OR (friend_1 = uid AND friend_2 = <your_id>); 

(과) 2 행을 삽입 - 당신은 OR (...)

1

현재 사용자의 친구에 대한 모든 상태가 선택됩니다.

SELECT s.* 
FROM status s 
INNER JOIN friends f ON f.friend_2 = s.uid 
WHERE f.friend_1 = your_current_user; 

우정 링크는 양방향으로 취급하지 않는 것이 좋습니다. 별도의 링크를 만드십시오. 예를 들어 사용자 1과 5가 친구 인 경우 두 개의 레코드가 있습니다.

| friend_1 | friend_2 | 
| 1  | 5  | 
| 5  | 1  | 

이렇게하면 저장 공간은 늘어나지 만 쿼리는 간단 해집니다. 또한 일방적 인 우정을 가능하게합니다. :-)

eevery 우정의 경우