2013-04-01 73 views
0

我想拉一個報告,其中每列是從一個特定的表集合中選擇。然而,其中一列需要從完全不同的表格集合中提取,並仍然包含在同一報告中。當然,這並不工作:SQL - 如何在一個查詢中有多個選擇/來自語句

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 
0

你的問題還不清楚,但只是一般,這聽起來像你想加入一個derived table(即查詢)。在這種情況下,請執行以下操作:

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

這是否合理?要生成派生表,可以在括號內放置一個查詢,給它一個別名(在這種情況下爲'B'),然後將它連接到其他表,就像它是一個常規表一樣。

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 
+0

這是非常接近我想要完成的。我試圖運行「子查詢」,但將其與關聯用戶(u.first_name)合併到主查詢中。我試圖這樣做,它編譯,但沒有提供正確的結果。它沒有將計數與用戶(u.first_name)列相關聯。它只給了所有用戶的總數。 – user2232524

+0

@ user2232524如果您共享表格結構和一些示例數據,我將能夠提供更好的幫助。 –