我的問題是,我甚至不知道這種查詢是否可能。我會嘗試解釋:mySQL複雜多項查詢
我有兩個關於電話呼叫,「呼叫」和「失敗呼叫」的表格。
這兩個表中的重要列是「目的地」和「路線」,但還有更多像Id_call和start_date和called_number等。我將省略關於時間段的過濾器以簡化。 「呼叫」中的目的地可能不在「失敗呼叫」中,反之亦然。
我想,每一個可能的目的地和路線夫婦,呼叫次數和失敗呼叫數,如下面的代碼:
select c.Destination, c.Route, count(c.id_call) as Correct, null as Failed
from Calls c
where c.Destination like ('Algeria%')
group by c.Destination, c.Route
union all
select f.Destination, f.Route, null, count(f.id_failed_call) as Failed
from Failed_Calls f
where f.Destination like ('Algeria%')
group by f.Destination, f.Route
它顯示:
Destination Route Correct Failed
Algeria 9 1 NULL
Algeria Mobile 9 4 NULL
Algeria Mobile 9 NULL 2
......這是正確的,但我需要在單行上顯示最後兩行的數據,即該目標和路由的正確和失敗調用的計數。
我嘗試過加入,左連接和沒有連接,但我總是得到一個壞計數,就像每個對夫婦的調用和失敗調用的結果。我最好的拍攝到現在爲止是:
select c.Destination, c.Route, count(distinct(c.id_call)) as Correct,
count(distinct(f.id_failed_call)) as Failed
from Calls c, Failed_Calls f
where c.Destination like 'Algeria%'
and f.Destination like 'Algeria%'
group by c.Destination, c.Route
...返回如下:
Destination Route Correct Failed
Algeria 9 1 2
Algeria Mobile 9 4 2
「正確」的列是確定的,但在「失敗」欄顯示所有失敗呼叫的總和目的地返回,在每一行(我在查詢中檢查了更多目的地)。
如果這種查詢是可能的,我希望有人能幫助我。
請參閱CASE,如在SELECT CASE WHEN ... THEN ... END – Strawberry