数据库
首页 > 数据库> > mysql-将每个用户的所有来往消息分组

mysql-将每个用户的所有来往消息分组

作者:互联网

我想知道是否有人可以帮助我.我工作的私人信息中心,这将使能PM的通过前端发送给对方用户.收件箱运行良好,但是我想添加一个页面,您可以在其中单击用户名,然后可以看到与此用户以及当前登录用户之间来回发送的所有消息.

例如:

用户1
    讯息A
    讯息B
    讯息C
    讯息D
    
    用户2
    讯息A
    讯息B
    讯息C
    
    用户3
    讯息A
    讯息B
    讯息C
    讯息D
    讯息E

在我的数据库中,我有一个包含所有用户的表:

id | user_login | user_pass | user_nicename | user_email | user_url | user_registered | user_activation_key

我有一个表,其中包含消息的信息:

id | parent_id | from_user | to_user | send_date | last_date | message_title | message_contents | status | to_del | from_del

表1中的用户ID对应于parent_id(嵌套形式的答复消息)以及表2中的from_user和to_user.

通过下一个查询(在Stackoverflow的基础上找到该查询后,将使用该查询),我可以从from_user列中回显结果,但是我想回显从该用户发送给用户的所有消息:

global $wpdb;
$result = $wpdb->get_results( "SELECT table1.id, table1.user_nicename, table2.id,
table2.from_user, table2.message_title FROM table1 
INNER JOIN table2 ON table1.id=table2.from_user 
GROUP BY user_nicename"  ); 

foreach($result as $row)
{
echo $row->user_nicename." <br>  ".$row->message_title."<br>";
}
?>

也许有人可以阐明这一点,并指出正确的方向吗?我想我需要使用INNER JOIN之类的东西来将to_user添加到查询中,但是我有点迷失了.

如果您需要更多信息,请告诉我.第一次在这里寻求帮助,所以我不知道我是否提供了足够的信息:)

非常感谢你提前为您的关注和帮助!

解决方法:

尝试这个:

SELECT t1.id, t1.user_nicename, t2.id, t2.from_user, t2.message_title 
FROM table1 t1
INNER JOIN table2 t2 ON t1.id IN (t2.from_user, t2.to_user)
ORDER BY t1.id;

如果要特定用户的消息,请使用以下查询:

SELECT t1.id, t1.user_nicename, t2.id, t2.from_user, t2.message_title 
FROM table1 t1
INNER JOIN table2 t2 ON t1.id IN (t2.from_user, t2.to_user)
WHERE t1.id = 1;

标签:join,select,inner-join,sql,mysql
来源: https://codeday.me/bug/20191028/1955278.html