|
|
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Добрый день! Хочу вывести список диалогов между пользователями одним запросом(если возможно такое конечно) Есть таблица сообщений: Код: plaintext Ни как не могу придумать запрос, чтобы вывести все диалоги. Скорее всего вопрос уже ясен, но для наглядности уточню: Таблица: Код: plaintext 1. 2. 3. 4. 5. 6. Авторизован пользователь с uid=1 Вот из такого странного диалога, необходимо выцедить некий DISTINCT по двум полям: Результат: Код: plaintext 1. 2. Т.е. список диалогов(или как в 7-й строчке, без ответа - монологов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 07:45:43 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
//Не нашел как редактировать сообщение. Небольшая поправка: Результат: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 07:47:43 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Добавлю сложности: Нужно выводить диалоги в хронологическом порядке Возможно на уровне SQL и не решить... Хотя конечно надеюсь, местные гуру подскажут :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 08:01:38 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Pavel KuznetsovРезультат: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 08:22:03 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
tanglirPavel KuznetsovРезультат: Код: plaintext 1. 2. Чтобы не выводить диалог с самим собой. Но можно опустить это (проще на PHP будет убрать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 08:42:38 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Pavel KuznetsovЧтобы не выводить диалог с самим собой Pavel Kuznetsov Код: plaintext Pavel Kuznetsov Код: plaintext где тут "диалог с самим собой"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 08:48:45 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Pavel KuznetsovАвторизован пользователь с uid=1 На самом деле первая строчка выведена - результата - 2 Задача стоит чтобы вывести все уникальные from_uid и to_uid В данном примере мы не выводим диалог с пользователем uid=1 А вот диалоги остальных пользователей нам нужно вывести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 09:02:04 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
авторРезультат: 2, 3, 7, Важно уточнее(каюсь забыл) - это uid (либо from_, либо to_) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 09:14:51 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Т.е. вывести список уникальных веток между пользователями. Или по другому "Список контактов" (которые отправляли мне сообщения, либо которым я отправлял) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 09:37:07 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
ну и чё? тривиальнейшая же задачка... Код: sql 1. 2. 3. 4. Pavel KuznetsovВозможно на уровне SQL и не решить... А Вы попробуйте не кидаться словами сразу, а сперва хоть что-нибудь почитать про то, за что хватаетесь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 09:38:56 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Akinaну и чё? тривиальнейшая же задачка... Код: sql 1. 2. 3. 4. Немного не понял откуда цифры 1 и 2? Если 1 - это UID авторизованного пользователя, то что означает 2 ? Изначально было следующее решение у меня. И оно отрабатывает на 75% необходимого результата: Код: sql 1. 2. 3. 4. НО! не получается сортировать по дате... AkinaPavel KuznetsovВозможно на уровне SQL и не решить... А Вы попробуйте не кидаться словами сразу, а сперва хоть что-нибудь почитать про то, за что хватаетесь... Я на форумах задаю вопрос очень редко (не чаще раза в год) и только после чтения доков и форумов. Вы же сами в свою очередь не зная меня и как я пытался решить свой вопрос, "бросили" слова о том, что я не читал "про то, за что хватаюсь"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 09:53:40 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Pavel KuznetsovЗадача стоит чтобы вывести все уникальные from_uid и to_uidПочему тогда именно запись №3, а не №1? До сих пор неясно, что же вы хотите получить. Pavel KuznetsovВ данном примере мы не выводим диалог с пользователем uid=1 А вот диалоги остальных пользователей нам нужно вывести.У вас во всех исходных записях пользователь 1 присутствует. Следовательно, результатом запроса, выполняющего задачу "вывести диалоги всех пользователей, кроме первого", на приведённых данных будет пустое множество. А у вас в результате несколько записей есть, да ещё и с первым юзером. Как это понимать?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 10:04:00 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Запутал я пользователей разными названиями. Если не смотреть записи после первого сообщения в этом форуме, то вот что нужно: Вывести список уникальных веток между пользователями. Или по другому "Список контактов" (которые отправляли мне сообщения, либо которым я отправлял) Можно в виде хотелки: "Хочу как во ВКонтакте". Т.е. есть список диалогов и соответственно можно выбрать диалог и продолжить его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 10:10:12 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Pavel KuznetsovНемного не понял откуда цифры 1 и 2?Кто-то "в качестве примера" (не будем показывать пальцем) привёл (правда, с ошибкой) пример вывода сообщений для диалога юзеров с ИДами 1 и 2. И теперь удиивляется, что я сделал то же самое? нелогично... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 12:16:49 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Второй вариант - хочешь ты одно, а пишешь совершенно второе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 12:18:10 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Всем спасибо! Вопрос закрыл. Вот таким решением: Код: sql 1. 2. 3. 4. Прошу извинить за PGSQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 12:42:10 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
Pavel KuznetsovDISTINCT ON(збс! то есть о том, что у вас постгре и можно пользоваться его синтаксическими плюшками, мы тоже должны были догадаться?.. а по сабжу - нужный список ид сообщений достаётся дубовым юнионом: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 13:36:10 |
|
||
|
DISTINCT на два поля или вывод списка диалогов
|
|||
|---|---|---|---|
|
#18+
tanglirPavel KuznetsovDISTINCT ON(збс! то есть о том, что у вас постгре и можно пользоваться его синтаксическими плюшками, мы тоже должны были догадаться?.. а по сабжу - нужный список ид сообщений достаётся дубовым юнионом: Код: sql 1. Всё еще хуже)) : Мне это дело нужно было перекинуть в AcitevRecord Yii , по этому решение на MySQL было бы предпочтительнее. А по ответу на сабж - спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 14:02:57 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38513929&tid=1835477]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 394ms |

| 0 / 0 |
