最初我一直在尝试合并 users_role_change_log
带的表格 users_schedule_log
. 第一个只有用户id,第二个只有全名。所以没有明确的打击。
我试着介绍第三张table把这两张table绑在一起- users
table。有users id,但全名分为两列第一个\u name和第二个\u name。所以这会使事情更加复杂。不是我的设计。
希望我能即兴把主站的名字和姓氏联系起来 users
表,并将其作为左联接的相关参数传递。
SELECT r.*,CONCAT(first_name, ' ', last_name) AS u.name
FROM `users_role_change_log` r
LEFT JOIN users u ON r.id = u.id
LEFT JOIN users_schedule_log e ON u.name = e.name
但这行不通。
有什么建议吗?
编辑:#1添加表示例:a)用户#角色#更改#日志
id user_id role time_changed
34 60 19 '2020-07-05 05:30:00'
b) 用户\计划\日志
id name shift_start shift_end
9 'John Doe' '2020-07-05 07:00:00' '2020-07-05 15:00:00'
c) 用户
id first_name last_name
60 'John' 'Doe'
d) 我想要的结局
a)user_id b)name a)role a)time_changed b)shift_start b)shift_end
60 'John Doe' 19 ...
4条答案
按热度按时间eagi6jfj1#
必须从开始连接
users
左连接users_role_change_log
以及users_schedule_log
在正确的列上:请看演示。
ikfrs5lh2#
你可以这样尝试:
或者这样:
当然你应该把星号改成你想要选择的字段。
bvk5enib3#
您可以为此使用子查询。希望能帮上忙,我的朋友:))
lymnna714#
在这把小提琴里找到答案。您需要为users表构造一个子查询
CONCAT
列,然后继续JOIN
.您可能需要考虑数据库模式,因为表
users_schedule_log
可以使用用户的id而不是他的名字(同名问题)。