powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчёт строк с последующим суммированием mysql
14 сообщений из 14, страница 1 из 1
Подсчёт строк с последующим суммированием mysql
    #38519269
gheka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте помогите пожалуйста составить запрос


есть таблица messages
в ней поля

sender
addressee
message

в sender и addressee записаны id пользователей

Нужно составить запрос так чтобы подсчитать количество переписок с разными пользователями

Например

sender - addressee - message
1 - 2 - привет
2 - 1 - привет как дела
1 - 2 - нормально

и так далее в этом случае 2 пользователя для каждого пользователя ПОЛУЧАТЕЛЯ - ОТПРАВИТЕЛЯ выведется по 1 переписке

такой вот привет

sender - addressee - message
1 - 2 - привет
2 - 1 - привет как дела
1 - 2 - нормально
1 - 3 - Как настроение

В этом случае 3 пользователя

пользователя

1 - 2 переписки
2 - 1 переписка
3 - 1 переписка

Как составить такой запрос частично я его делаю так но он не правильно работает

1 вариант

Код: sql
1.
2.
3.
4.
$t = "SELECT count(*) AS `count` FROM `messages` WHERE `sender`='id_user' OR `addressee`='id_user' GROUP BY `sender`+`addressee`";
$lines_count = mysql_query ( $t ),
 
$lines_count = mysql_result ($lines_count, 0);




Если немного изменить запрос сделать так:
2 вариант

Код: sql
1.
2.
3.
4.
$t = "SELECT * FROM `messages` WHERE `sender`='id_user' OR `addressee`='id_user' GROUP BY `sender`+`addressee`";
$lines_count = mysql_query ( $t ),
 
$lines_count = mysql_num_rows($lines_count);



То этот запрос выводит правильно.

Что как подправить 2 вариант чтобы он работал?
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519493
gheka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну не ужели ни кто не знает, очень надо.

просто использовать 1 вариант, грузит много памяти потому, что строк очень много, да и выводить из из таблицы ничего не нужно, нужно только получит количество строк.

Может не совсем понятно написал, так напишите я постараюсь внятней расписать.
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519501
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бред сивой кобылы.

У тебя
ghekaв sender и addressee записаны id пользователей
А ты делаешь
gheka
Код: sql
1.
GROUP BY `sender`+`addressee`


Итого - мессы от 1 к 2 и от 2 к 1 воспринимаются как один базар... мессы от 1 к 4 и от 2 к 3 тоже воспринимаются как один базар...

Гугли термин "конкатенация", что ли...
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519523
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
SELECT count(DISTINCT `sender`+`addressee`) FROM `messages`
WHERE 1 IN (`sender`,`addressee`)
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519531
gheka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело что, выборка переписок с пользователями при таком запросе

Код: sql
1.
2.
3.
4.
5.
6.
7.
$t = "SELECT * FROM `messages` WHERE `sender`='id_user' OR `addressee`='id_user' GROUP BY `sender`+`addressee` ORDER BY `id` ASC" LIMIT 0, 15;
$result= mysql_query ( $t ),

for ( $i = 0; $i < mysql_num_rows ( $result ); $i++ ) {
     $messages_list = mysql_fetch_assoc ( $result );

}



Работает как положено то есть выводит переписки пользователей.

Но мне эти переписки нужно разделить на страницы по 15 переписок на одной странице.
Соответственно мне нужно получить общее число переписок.

Подсчёт должен работать так чтобы

Сообщение допустим есть 2 пользователя
user 1
user 2


если они пишут друг другу

тоесть

1 - 2
2 - 1

это считается одна переписка и должно вывести
count = 1

если так

1 - 2
2 - 1
3 - 2

в этом случае переписки 2
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519535
gheka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yarnik
Код: sql
1.
2.
SELECT count(DISTINCT `sender`+`addressee`) FROM `messages`
WHERE 1 IN (`sender`,`addressee`)


Работает но не совсем верно выводит 2, а должно быть 3
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519536
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с какого перепугу?
автортакой вот привет

sender - addressee - message
1 - 2 - привет
2 - 1 - привет как дела
1 - 2 - нормально
1 - 3 - Как настроение

В этом случае 3 пользователя

пользователя

1 - 2 переписки
2 - 1 переписка
3 - 1 переписка
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519544
gheka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yarnikс какого перепугу?
автортакой вот привет

eсли я user 1
sender - addressee - message
1 - 2 - привет
2 - 1 - привет как дела
1 - 2 - нормально
1 - 3 - Как настроение


То в этом случае выведет 2 но это же присмер

в таблице у меня в базе так

1 -> 2
2 -> 1
3 -> 1
4 -> 1

должно быть 3 переписки count 3 а выводит count 2
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519555
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня выводит 3 =)
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519585
gheka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yarnikу меня выводит 3 =)

Код: sql
1.
2.
SELECT count(DISTINCT `sender`+`addressee`) FROM `messages`
WHERE 1 IN (`sender`,`addressee`)



а в 1 что у вас тут?

Я за место 1 подставлял условие `sender`='1' OR `addressee`='1'
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519586
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 1 у меня 1.
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519599
gheka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yarnikв 1 у меня 1.

куда в запросе вы условие ставите, id пользователя?
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519614
Фотография yarnik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 это и есть ид пользователя
Можете его поменять на 2
...
Рейтинг: 0 / 0
Подсчёт строк с последующим суммированием mysql
    #38519641
gheka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yarnik1 это и есть ид пользователя
Можете его поменять на 2

Ваш запрос не работает так как нужно.
Вот немного изменил добился того что нужно.


Код: sql
1.
2.
3.
4.
5.
$t="SELECT count(DISTINCT `sender`+`addressee`) FROM `" . DB_PREFIX . "messages`
WHERE `sender`='1' OR `addressee`='1'";
 
$count = mysql_query ( $t );
$count = mysql_result ($count, 0);



Но всё равно спасибо на вашем примере всётаки нашёл решение.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчёт строк с последующим суммированием mysql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]