2013-04-10 107 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

相关问题