【发布时间】:2015-05-14 23:53:24
【问题描述】:
我一直在寻找并尝试了几次尝试来解决这个问题。我已经经历了 INNER JOIN、LEFT JOIN、SELECT 并且我只是没有取得进展。
我有一个包含 id、from_user_id、to_user_id、time、actioned_by、date、message 列的消息表。在我的用户表中有id、first_name、last_name 以及其他一些信息,例如电子邮件、密码、权限等。
消息表 from_user_id、to_user_id 和 actioned_by 中的列是对应于用户表中的 id 的 INT,我想将用户的名字和姓氏返回到新表。所以如果我的用户表看起来像:
id:1,名字:Dave,姓氏:某人
id: 2, first_name: John, last_name: 别人
id:3,first_name:管理员,last_name:用户
我的消息表看起来像:
id: 1, from_user_id:1, to_user_id:2, time:1425818720, actioned_by: 3, date:1425772800, message:这是一条好消息
然后我会回来:
id: 1, from_user_id: Dave Some, to_user_id:John Someelse, time:1425818720, actioned_by: Admin User, date: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 函数来获取名称?
非常感谢
戴夫
【问题讨论】: