2012-03-06 1 views
0

친구를 사귈 수있는 쿼리와 사용자가 상태로 게시 한 모든 게시물을 얻는 쿼리가 있습니다. 이제이를 결합해야합니다.두 개의 MYSQL 쿼리를 결합하여 친구들 만 소식을 얻을 수 있습니다.

친구 :

다음
SELECT CASE WHEN userID=$session THEN userID2 ELSE userID END AS friendID 
FROM friends 
WHERE userID=$session OR userID2=$session 

사용자 게시물 :

SELECT * FROM posts 
WHERE toID=fromID AND state='0' 
ORDER BY id DESC LIMIT 10 

그래서 그들은 함께 작동합니다으로 모두 작동합니다. 첫 번째 쿼리의 friendID는 ID 또는 fromID와 동일해야합니다. 둘 다 동일해야하므로 서로 상관 없습니다.

답변

2

두 번째 조건이 그들이 친구라는 것이다. 따라서 :

SELECT * FROM posts 
WHERE toID=fromID AND state='0' AND toID IN 
    (SELECT CASE WHEN userID=$session THEN userID2 ELSE userID END AS friendID 
    FROM friends 
    WHERE userID=$session OR userID2=$session) 
ORDER BY id DESC LIMIT 10 
+0

그래,이게 제대로 작동하는 것 같습니다. 나는 또한 $ 세션이 친구뿐만 아니라 반환되기를 바란다는 점을 언급하는 것을 잊어 버렸다. –

+0

그러면 darkajax에서 제안한대로 조인을 사용해야합니다 –

0

당신은 JOIN를 사용해야 게시물에 대한

SELECT 
    CASE 
     WHEN userID=$session THEN userID2 
     ELSE userID 
    END AS friendID, 
    posts.* 
FROM friends 
JOIN posts on posts.toID = friends.friendID 
WHERE (userID=$session OR userID2=$session) 
AND toID=fromID 
AND state='0' 
ORDER BY id DESC LIMIT 10 
관련 문제