gpt4 book ai didi

php - mySQL 从 'users' 表中的 'messages' 表返回值,其中三列将返回不同的用户

转载 作者:行者123 更新时间:2023-11-29 22:47:54 25 4
gpt4 key购买 nike

我一直在寻找并尝试了多次尝试来解决这个问题。我已经经历了 INNER JOIN、LEFT JOIN、SELECT,但我只是没有取得进展。

我有一个包含列 idfrom_user_idto_user_idtimeactioned_by 的消息表日期消息。在我的用户表中,有 idfirst_namelast_name 以及其他一些内容,例如电子邮件、密码、权限等。

消息表中的列 from_user_idto_user_idactioned_by 是 INT,它们对应于中的 id users 表,我想将用户的名字和姓氏返回到新表。因此,如果我的用户表如下所示:

id:1,名字:戴夫,姓氏:某人
id:2,名字:约翰,姓氏:其他人
ID:3,名字:管理员,姓氏:用户

我的消息表看起来像:

id:1,from_user_id:1,to_user_id:2,时间:1425818720,actioned_by:3,日期:1425772800,消息:这是一条好消息

然后我会返回:

id:1,from_user_id:Dave Somer,to_user_id:John Someelse,时间:1425818720,actioned_by:管理员用户,日期:1425772800,message:这是一条好消息

到目前为止我最好的尝试是这个

SELECT `message_history`.`id`,`message_history`.`from_user_id`, `message_history`.`to_user_id`,`message_history`.`actioned_by` `message_history`.`time`, `message_history`.`date`, `message_history`.`message` 
(SELECT `users`.`first_name`, `users`.`last_name`
FROM `users`
WHERE `users`.`id`=`message_history`.`from_user_id`
) AS `from`,
(SELECT `users`.`first_name`, `users`.`last_name`
FROM `users`
WHERE `users`.`id`=`message_history`.`to_user_id`
) AS `to`,
(SELECT `users`.`first_name`, `users`.`last_name`
FROM `users`
WHERE `users`.`id`=`message_history`.`actioned_by`
) AS `actioned`
FROM `message_history`

这在 mySQL 中是否可能,或者我是否也可以编写一个 PHP 函数来获取名称?

非常感谢

戴夫

最佳答案

非常感谢您的帮助,我不得不做一些小的调整,但最终通过这个查询到达了目标

select 
message_history.id, message_history.from_user_id, message_history.to_user_id, message_history.actioned_by, message_history.time, message_history.date, message_history.message,
concat(from_user.first_name, ' ', from_user.last_name) as from1,
concat(to_user.first_name, ' ', to_user.last_name) as to1,
ifnull(concat(actioned_user.first_name, ' ', actioned_user.last_name),'') as actioned
from
message_history
join users from_user on
message_history.from_user_id = from_user.id
join users to_user on
message_history.to_user_id = to_user.id
left join users actioned_user on
message_history.actioned_by = actioned_user.id

关于php - mySQL 从 'users' 表中的 'messages' 表返回值,其中三列将返回不同的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29016313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com