此查询:

select a.* , u.firstn, u.lastn,  u.Extension
from jfi.ambitiontempdata a
inner join jackson_id.users u
on a.Extension = u.Extension;

调出我为CSR呼叫系统创建的许多记录,显示呼叫记录、呼叫号码和发起呼叫的号码等。
这很好用,但我需要用另一个数据过滤一次。
我有一个名为jfi.ambition_customer_data的表,它没有ID或任何东西加入到我现有的查询中。但是,我需要运行上面的查询并检查jfi.ambition_customer_data表,看看每个表中是否存在特定的电话号码。不过,我从jfi.ambitiontempdata表中检查的数字取决于两个因素。
从上面的查询中,如果a.outbound = 1然后检查called_party是否存在于jfi.ambition_customer_data,如果a.outbound = 0,则检查是否存在cc>。
以下是我的结果截图供参考:
mysql - 与没有连接的另一个表相比过滤数据-LMLPHP
以下是来自customer表的数据,因此需要将上述调用字段与此表中的“Phone”进行比较:
mysql - 与没有连接的另一个表相比过滤数据-LMLPHP
因此,如何筛选我的选择数据,以确保我只得到记录,在2个不同的数字可能存在于客户表取决于呼叫类型?

最佳答案

我认为,简单的结合就足够了,而且可能更容易理解:

select a.* FROM ambitiontempdata a
inner join customer c on a.called_party = c.phone
where a.outbound = 1
UNION
select a.* FROM ambitiontempdata a
inner join customer c on a.calling_party = c.phone
where a.outbound = 0;

编辑
要将此简单地与您自己的查询结合起来,您可以执行以下操作:
select a.* , u.firstn, u.lastn,  u.Extension
from jfi.ambitiontempdata a
inner join jackson_id.users u
on a.Extension = u.Extension
inner join jfi.ambition_customer_data c
on a.called_party = c.phone
where a.outbound = 1
UNION
select a.* , u.firstn, u.lastn,  u.Extension
from jfi.ambitiontempdata a
inner join jackson_id.users u
on a.Extension = u.Extension
inner join jfi.ambition_customer_data c
on a.calling_party = c.phone
where a.outbound = 0;

第二次编辑
这样好些吗?
SELECT ua.*, u.firstn, u.lastn,  u.Extension
FROM
(select a.* FROM ambitiontempdata a
inner join customer c on a.called_party = c.phone
where a.outbound = 1
UNION
select a.* FROM ambitiontempdata a
inner join customer c on a.calling_party = c.phone
where a.outbound = 0) ua
INNER JOIN jackson_id.users u
on ua.Extension = u.Extension

10-06 09:10