0

我正在尝试提取每列从特定表集中选择的报告。但是,其中一列需要从完全不同的表集中提取,并且仍然包含在同一个报告中。当然,这不起作用:

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)从不同的表格集中选择零件,但仍会包含在报告中。

4

3 回答 3

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
于 2013-04-01T15:09:19.040 回答
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
于 2013-04-01T15:01:16.510 回答
0

您的问题不清楚,但一般来说,听起来您正在尝试加入derived table(即查询)。在这种情况下,请执行以下操作:

SELECT...
FROM...
table_A A LEFT JOIN 
   (SELECT keyfield, valuefield FROM table_b WHERE ...) B 
   ON A.keyfield = B.keyfield

那有意义吗?要创建一个派生表,您在括号内放置一个查询,给它一个别名(在本例中为“B”),然后将它连接到您的其他表,就好像它是一个常规表一样。

于 2013-04-01T15:07:38.870 回答