2013-04-10 102 views
1

過去幾天,我一直試圖創建一個SQL查詢來顯示朋友之間的帖子。但是,我無法弄清楚我做錯了什麼。對我來說,帖子看起來像重複自己,行爲與我的意圖不同。使用JOIN顯示朋友信息

此查詢「應該」顯示來自我和我的朋友的用戶的帖子。

SELECT * 
FROM bhost_entries 
WHERE 
    author_u_id='$user_info[u_id]' 
    OR author_u_id IN (SELECT follower_u_id 
        FROM bhost_userfollow 
        WHERE following_u_id='$user_info[u_id]') 
ORDER BY e_id DESC 

表:

bhost_entries:  e_id, author_u_id, title 
bhost_userfollow: uf_id, following_u_id, follower_u_id 

我是完全偏離了軌道?欣賞任何想法。

輸出(以下2個用戶時)

Heihei 
Aker Brygge-spesial 
Vi har oppdatert retningslinjene 
Hei, dette er en kladd! 
To do list 
Testinnlegg 
Push Notifications 
Californication 
Hank Moody 
Hei bloggen 
Heihei 
Aker Brygge-spesial 
Vi har oppdatert retningslinjene 
Hei, dette er en kladd! 
To do list 
Testinnlegg 
Push Notifications 
Californication 
Hank Moody 
Hei bloggen 
+0

你能告訴我們你得到的輸出,而且看起來不對嗎? – Borniet 2013-04-10 10:33:01

+0

你是什麼意思?我應該怎麼做? @Borniet – user2261044 2013-04-10 10:34:29

+0

運行查詢,然後將輸出複製並粘貼到答案中(假設結果不會很長)。 – 2013-04-10 10:37:15

回答

0

如果我有機會測試它,我會做這樣的:

SELECT e_id, author_u_id, title 
FROM bhost_entries, bhost_userfollow 
WHERE 
    author_u_id='$user_info[u_id]' 
    OR (follower_u_id='$user_info[u_id]' AND following_u_id=author_u_id) 
ORDER BY e_id DESC 
GROUP BY e_id 
+0

每篇文章都會重複。任何線索? – user2261044 2013-04-10 12:24:58

+0

這意味着它的工作?我已經添加了一組以避免重複。 – Julien 2013-04-10 12:36:52

+0

謝謝你的幫助!它工作得很好:) – user2261044 2013-04-10 14:07:54

0

你可以嘗試這樣的事:

SELECT DISTINCT (e.e_id) AS entry_id, 
     e.title AS entry_title, 
     e.author_u_id AS author_id 
FROM bhost_entries AS e 
JOIN bhost_userfollow AS f 
ON (f.following_u_id = e.author_u_id) 
WHERE (e.author_u_id = '$user_info[u_id]' OR f.follower_u_id = '$user_info[u_id]') 

如果我正確理解它,它會訣竅。看看這裏:SQL Fiddle

相關問題