2012-03-06 9 views
0

私は友人の友人を取得するクエリを持っています。2つの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

の記事のためのあなたの第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 
関連する問題