我的问题是,我甚至不知道这种查询是否可能。我会尝试解释: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