Php 新闻提要的SQL内部联接

Php 新闻提要的SQL内部联接,php,mysql,sql,inner-join,Php,Mysql,Sql,Inner Join,我在语句的内部连接方面遇到了一些问题。我正在尝试从用户的好友列表中获取他们新闻提要上的所有“帖子”。我试图通过获取用户是发起人的所有帖子,并从朋友的帖子中获取所有帖子,然后我想从发起人的帖子中获取所有帖子,其中用户的id是朋友的帖子 在以前,这是可行的,但它只获取用户是发起人的帖子。\u user\u id: $wallsql= $conn->prepare('SELECT * FROM activity f INNER JOIN wp_bp_friends n2 ON n2.friend

我在语句的内部连接方面遇到了一些问题。我正在尝试从用户的好友列表中获取他们新闻提要上的所有“帖子”。我试图通过获取用户是发起人的所有帖子,并从朋友的帖子中获取所有帖子,然后我想从发起人的帖子中获取所有帖子,其中用户的id是朋友的帖子

在以前,这是可行的,但它只获取用户是发起人的帖子。\u user\u id:

$wallsql= $conn->prepare('SELECT * FROM activity f INNER JOIN wp_bp_friends n2 ON n2.friend_user_id=f.user_id WHERE n2.initiator_user_id=:userid ORDER BY datetime DESC LIMIT 8');
userid24可以查看userid22的“帖子”,例如22的帐户创建时间和状态更新。它需要做的是让userid22也看到userid24的更新。现在这是片面的。我认为以下几点可以实现这两个目标:

$wallsql= $conn->prepare('SELECT * FROM activity f INNER JOIN wp_bp_friends n1 ON (n1.initiator_user_id=f.user_id) INNER JOIN wp_bp_friends n2 ON (n2.friend_user_id=f.user_id) WHERE (n1.friend_user_id=:userid) OR (n2.initiator_user_id=:userid) ORDER BY datetime DESC LIMIT 8'); 
$wallsql->bindParam(':userid', $_SESSION['uid']);
$wallsql->execute();
这是桌子和它们是如何设置的

wp_bp_friends table:

id     initiator_user_id     friend_user_id     is_confirmed     is_limited     date_created
11            24                    22                1               0          2013-12-11 11:17:26




Activity table:

ID     user_id                type                       component     filetype     group_id            content                     datetime
15        22             accountcreated                     NULL           NULL            0                NULL                2013-12-11 11:17:26
15        22                   status                       NULL           NULL            0           Hello World!          2013-12-11 11:17:26
15        24            accountcreated                      NULL           NULL             0               NULL                2013-12-11 11:17:26
15        24                   status                       NULL           NULL            0             Whats up            2013-12-11 11:17:26
这可能会奏效:

SELECT * 
FROM   activity f 
       INNER JOIN wp_bp_friends n2 
               ON n2.friend_user_id = f.user_id 
WHERE  n2.initiator_user_id = :userid 
UNION ALL 
SELECT * 
FROM   activity f 
       INNER JOIN wp_bp_friends n2 
               ON n2.initiator_user_id = f.user_id 
WHERE  n2.friend_user_id = :userid 
ORDER  BY datetime DESC 
LIMIT  8
这可能会奏效:

SELECT * 
FROM   activity f 
       INNER JOIN wp_bp_friends n2 
               ON n2.friend_user_id = f.user_id 
WHERE  n2.initiator_user_id = :userid 
UNION ALL 
SELECT * 
FROM   activity f 
       INNER JOIN wp_bp_friends n2 
               ON n2.initiator_user_id = f.user_id 
WHERE  n2.friend_user_id = :userid 
ORDER  BY datetime DESC 
LIMIT  8

对两个方向分别进行查询,并将它们与
UNION
组合。我对UNION不熟悉。你能给我一个答案吗?我和一个客户有点时间紧张:-/我从来都不是一个要求别人帮我做这件事的人,但我需要这方面的帮助。对两个方向进行单独的查询,并将它们与
UNION
结合起来。我不熟悉UNION。你能给我一个答案吗?我和一个客户有点时间紧张:-/我从来都不是一个要求别人帮我做这件事的人,但我需要这方面的帮助。