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


есть таблица 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
08.01.2014, 14:00:37
    #38519493
gheka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
Ну не ужели ни кто не знает, очень надо.

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

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

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


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

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

Код: 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
08.01.2014, 14:41:34
    #38519535
gheka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
yarnik
Код: sql
1.
2.
SELECT count(DISTINCT `sender`+`addressee`) FROM `messages`
WHERE 1 IN (`sender`,`addressee`)


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

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

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

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

1 - 2 переписки
2 - 1 переписка
3 - 1 переписка
...
Рейтинг: 0 / 0
08.01.2014, 15:01:13
    #38519544
gheka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
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
08.01.2014, 15:20:44
    #38519555
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
у меня выводит 3 =)
...
Рейтинг: 0 / 0
08.01.2014, 15:46:56
    #38519585
gheka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
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
08.01.2014, 15:47:56
    #38519586
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
в 1 у меня 1.
...
Рейтинг: 0 / 0
08.01.2014, 16:00:40
    #38519599
gheka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
yarnikв 1 у меня 1.

куда в запросе вы условие ставите, id пользователя?
...
Рейтинг: 0 / 0
08.01.2014, 16:27:16
    #38519614
yarnik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
1 это и есть ид пользователя
Можете его поменять на 2
...
Рейтинг: 0 / 0
08.01.2014, 16:57:33
    #38519641
gheka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчёт строк с последующим суммированием mysql
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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчёт строк с последующим суммированием mysql / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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