我正在使用一个表格来跟踪所有调用的电话,并且我正在尝试制作一份报告,显示特定 UserID
调用和接听的电话。问题是调用可以作为群组调用进行,并且这些调用对于接收调用的人具有不同的UserID
。发出调用时,会使用发出调用的设备的 UserID
生成一个条目,并且 CallDirection
为 Initiated
,然后是一个条目将为每个正在调用电话的设备进行调用,每个设备都有接收设备的 UserID
和 CallDirection
为 Received
。
唯一将条目联系在一起的是另一列标记为 CallID
的列。他们在这里共享相同的 ID。
所以我想查询具有特定UserID
的所有通话记录,如果CallDirection
是Initiated
,那么我也想获取所有具有该 CallId
的行(与我筛选的 UserID
不同)
我似乎绞尽脑汁不知道如何做到这一点,并且非常感谢任何帮助。
最佳答案
根据我对问题的理解,您可以进行自连接,其中一个副本具有 CallDirection
= Initiated
的记录,另一个副本是您的原始表并加入他们在 CallID
上。
SELECT A.RecordID, A.CallID, A.UserID, A.CallDirection
FROM CALL_HISTORY A
INNER JOIN
(SELECT RecordID, CallID, UserID, CallDirection FROM CALL_HISTORY WHERE CallDirection="Initiated" AND UserID=10680 ) I
ON A.CallID = I.CallID
UNION ALL
(SELECT RecordID, CallID, UserID, CallDirection FROM CALL_HISTORY WHERE CallDirection="Received" AND UserID=10680);
关于当列是特定值时mysql选择具有不同过滤器的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48294018/