【发布时间】:2021-07-09 11:59:05
【问题描述】:
我使用的是 MySql 8.0.23 并且有两个 select 语句。第一个是这样的:
SELECT w.userid,w.reportdate, t.teamname, sum(w.worked)/60 as Worked FROM apticproject.view_workedtime as w
inner join user u on u.userid=w.userid
left outer join teammembers m on m.member=w.userid
left outer join teams t on t.teamid=m.team
where reportdate >= '2021-03-01' and reportdate <'2021-04-01'
group by w.userid
order by fullname ;
并给出以下输出:
第二个 select 语句如下所示:
SELECT r.userid, sum(r.invoicetime)/60 as invoicetime FROM apticproject.view_registeredtime as r
inner join user u on u.userid=r.userid
left join teammembers m on m.member=r.userid
left join teams t on t.teamid=m.team
where fromdate >= '2021-03-01' and fromdate <'2021-04-01' and r.invoiced=1 and r.approved=1 and charge_customer=1 and r.zeroinvoice=0
group by userid
order by fullname;
并给出以下输出:
我希望能够将 invoicetime 列从第二个 select 语句连接到第一个 select 语句,以便 invoicetime 列显示在第一个 select 语句中的 Worked 列之后。如您所见,我有可用作连接点的用户 ID。最有效的方法是什么?非常感谢您的帮助。
【问题讨论】:
-
将您的查询用作子查询,按公共列连接。
-
请edit 提及您使用的 MySQL / MariaDB 版本。使用 v8+,这些查询更容易编写,因为它们有 common table expressions。
-
@O.Jones,它已更新
标签: mysql sql join select subquery