mysql выбирает строки с другим фильтром, когда столбец имеет определенное значение

0

Я работаю с таблицей, которая отслеживает все сделанные вызовы, и я пытаюсь сделать отчет, который показывает оба вызова, сделанные и полученные определенным UserID. Проблема заключается в том, что вызовы могут выполняться как групповые вызовы, и эти вызовы имеют разные UserIDs для тех, кто получает вызов. Когда вызов помещен, есть запись, сделанная с UserID пользователя устройства, CallDirection вызов, и имеет CallDirection из Initiated, тогда будет сделана запись для каждого из устройств, к которым выполняется вызов, каждый с UserID пользователя принимающего устройства и CallDirection Received.

Единственное, что связывает запись вместе, это еще один столбец с названием CallID. Все они имеют одинаковый идентификатор.

Поэтому я хочу, чтобы Query для всех записей вызовов с определенным UserID и если CallDirection Initiated, тогда я также хочу получить все строки, которые имеют этот CallId (который не будет иметь тот же UserID который я фильтрую)

Изображение 174551

Я просто не могу понять, как это сделать, и очень признателен за любую помощь.

Теги:

2 ответа

0
Лучший ответ

Основываясь на моем понимании проблемы, вы можете сделать самостоятельное объединение, в котором одна копия имеет запись с 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);
0

@Vashi Awesome! Это дает мне полную группу вызовов "Инициировано" этим пользователем, но теперь мне нужно это, чтобы также дать мне звонки, которые "Получены". Вот мой запрос сейчас:

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;
  • 0
    Проверьте отредактированный ответ. Добавлено UNION ALL для добавления Received записей.
  • 0
    Это сделал это! Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню