当列是特定值时,mysql选择具有不同过滤器的行

时间:2018-01-17 05:15:25

标签: mysql sql

我正在使用一个跟踪所有拨打电话的表,我正在尝试制作一个报告,显示由特定UserID发出和接收的电话。问题是可以作为群组呼叫进行呼叫,并且这些呼叫对于接听呼叫的呼叫具有不同的UserIDs。拨打电话时,如果设备的UserID拨打电话并且CallDirectionInitiated,则会为每个设备创建一个条目,正在拨打电话,每个电话都有接收设备的UserIDCallDirection Received

唯一将条目联系在一起的是另一个标有CallID的列。他们在这里共享相同的ID。

所以我想查询具有某个UserID的所有通话记录,如果CallDirectionInitiated,那么我还希望获得具有CallId的所有行}(它不会与我过滤的UserID相同)

Example of entries

我似乎无法围绕如何做到这一点,并且非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

根据我对问题的理解,您可以进行自我加入,其中一个副本包含CallDirection = Initiated的记录,其他副本是您的原始表格,并在{{1}上加入它们}。

CallID

答案 1 :(得分:0)

@Vashi 真棒!这让我成为了一整套电话"已启动"由那个用户,但现在我需要它也给我打电话"收到"。 这是我现在的查询:

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;