2011-09-19 4 views
1

나는 몇 시간 동안 고생하고 있으므로 저를 도와주세요. 이 내 사용자 테이블php 친구 표

id | username | last_activity(timestamp for online system) 

입니다 그리고 이것은 내 친구 테이블

id | uid | fid 

내가 원하는 것은 last_activity에 의해 출력을 주문하는 것입니다 내 현재 쿼리는 다음과 같습니다 :

SELECT fid FROM friends WHERE uid='$user_id' 

답변

1

당신은 두 개의 테이블을 조인 INNER JOIN를 사용하려면 :

SELECT f.fid 
FROM friends f 
INNER JOIN users u 
ON u.id = f.id 
ORDER BY u.last_activity DESC 

항상 몇 가지 방법이 오래되고 더 많은 지원되지 않는를 받고있는 당신이 진정한 가입 절을 입력해야합니다.

더 여기 읽기 : INNER JOIN on w3schools

+0

감사합니다 ________ :) – Dave

2
SELECT f.fid FROM f.friends 
LEFT JOIN users u ON f.uid = u.id 
WHERE uid=$user_id 
ORDER BY u.last_activity DESC 
+1

당신은 last_activity를 얻기 위해 사용자 테이블에 가입해야합니다. – jasonbar

+0

jasonbar 감사합니다. 너무 빨리 읽고 편집했습니다. – xofer

+1

np 당신의 JOIN은 WHERE 절 앞에 올 필요가 있습니다. – jasonbar

0

hink 당신은 내가 당신의 문제가 fid 한 테이블에 있다고 가정

SELECT f.fid AS fid 
FROM friends f, users u 
WHERE f.uid = u.id AND f.uid = $user_id 
ORDER BY u.last_activity DESC 

을 원하지만 주문 기준 last_activity 다른 테이블에 있습니다. 이 쿼리의 목표는 WHERE 절을 통해 users 테이블의 해당 행과 함께 friends 테이블의 각 행 JOIN입니다.

0

친구 테이블에 uid 사용자 테이블에 foreign key references to id입니다 가정. INNER JOIN을 사용하여 원하는 결과를 검색 할 수 있습니다.

 SELECT f.fid 
     FROM friends f INNER JOIN user_tb u 
     ON u.id = f.uid 
     WHERE f.uid = '$user_id' 
     ORDER BY u.last_activity DESC;