Группа MySql с предложением

У меня есть табличное сообщение со следующей структурой

id   -  to_number     -  from_number  -  message       - send_to_podio_time
100  -  +16235708320  - +16232992010  -  test message1 - 2019-03-07 18:31:12
101  -  +16232992010  - +16235708320  -  test message2 - 2019-03-07 18:31:15
102  -  +16235708786  - +16232992010  -  test message3 - 2019-03-07 18:31:16
103  -  +16232992010  - +16235708786  -  test message4 - 2019-03-07 18:31:18

Мне нужно получить количество потоков разговоров между двумя телефонными номерами Ожидаемый результат

phone_numbers              -  count
+16235708320:+16232992010  -   1
+16235708786:+16232992010  -   1

Может ли кто-нибудь помочь мне с соответствующим запросом?

но message1 и message2 находятся между одними и теми же номерами. аналогично для сообщений 3 и 4, поэтому ожидаемый результат не должен показывать «2» в обеих строках?

Sachem 07.03.2019 19:22

@Sachem message1 и message2 - это черно-белые одинаковые номера (одна цепочка сообщений). Например, сообщение3 и сообщение4 являются черно-белыми другими одинаковыми номерами (одна цепочка сообщений). Таким образом, количество должно быть 1

Anas 07.03.2019 19:26

Я не совсем понимаю. Как это «1 поток сообщений», если +16235708320 ответил «сообщением2»? :)

Sachem 07.03.2019 19:31

Это разговор. Разговор между одинаковыми телефонными номерами. Я хочу получить каждый разговор отдельно. Это то, что мне было нужно. :(

Anas 07.03.2019 19:45
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
4
20
1

Ответы 1

Пытаться:

SELECT CONCAT_WS(':', from_number, to_number), COUNT(*) 
FROM table_name
GROUP BY from_number, to_number;

Однако в результате будут показаны 4 строки, потому что обратный «порядок» между сообщениями 1 и 2 (и аналогично 3 и 4) будет обрабатываться отдельно. Но поскольку вы хотели получить «1» в качестве результата в каждой строке, возможно, это то, что вы искали?

первые 2 ряда одной нитью. Так что это должно считаться как 1. Так следующие 2 ряда

Anas 07.03.2019 19:39

как узнать, что это тот же поток, не имеющий столбца thread_id в таблице?

Sachem 07.03.2019 19:44

чтобы достичь того, что вы хотите, вы должны запрашивать числа «от» и «до» отдельно (не конкатенировать), а затем вы можете легко отфильтровать «дубликаты» в цикле. просто проверьте, нет ли пары или перевернутой пары в конечном массиве, и если это так, то не добавляйте ее в него.

Sachem 07.03.2019 20:07

Другие вопросы по теме