我正在尝试提取每个列从特定表集中选择的报告。但是,其中一列需要从完全不同的表集中提取并仍包含在同一报表中。当然,这不起作用:
select u.first_name, ticket_work.time_spent
FROM tickets LEFT OUTER JOIN ticket_work ON ticket_work.ticket_id = tickets.id JOIN users u
(select count(tickets.id) FROM tickets JOIN users u)
where tickets.assigned_to = u.id
...
因此,只需要从不同的表集中选择(select count(tickets.id) FROM tickets JOIN users u)
部分,但仍然包含在报告中。
答案 0 :(得分:0)
我对你的问题感到有些困惑。您想要返回用户,该用户的门票数量以及整体花费的时间吗?如果是这样,这样的事情应该有效:
select u.id, u.first_name,
SUM(tw.time_spent) summed_time_spent,
COUNT(DISTINCT t.id) count_tickets
FROM users u
LEFT JOIN tickets t
ON u.id = t.assigned_to
LEFT JOIN ticket_work tw
ON tw.ticket_id = t.id
GROUP BY u.id, u.first_name
答案 1 :(得分:0)
你的问题不清楚,但一般来说,听起来你正试图加入derived table
(即查询)。在这种情况下,请执行以下操作:
SELECT...
FROM...
table_A A LEFT JOIN
(SELECT keyfield, valuefield FROM table_b WHERE ...) B
ON A.keyfield = B.keyfield
这有意义吗?要创建派生表,可以在括号内放置一个查询,给它一个别名(在本例中为“B”),然后将它连接到其他表,就像它是常规表一样。
答案 2 :(得分:0)
不了解您的表结构,但您可以使用子查询来满足此类要求
select u.first_name, ticket_work.time_spent,(select count(tickets.id) FROM tickets where ticket.id=ticket_work.ticket_id) as myCount
FROM tickets LEFT OUTER JOIN ticket_work ON ticket_work.ticket_id = tickets.id JOIN users u
where tickets.assigned_to = u.id