|
|
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
Доброй ночи|дня форумчане, всю голову сломал, никак не могу дойти до нужного результата Есть две таблицы, одна с сообщениями, другая с пользователями суть такова - выводить все последние сообщения из бесед пользователя, соответственно диалогов много => выводить последнее по каждому диалогу. messages: id user_from user_to text date ...1 vodolazzzz 3 zzz 1388281961 ...2 vasiliy 1 xxx 1388281953 ...3 kate 2 yyy 1388281945 ...4 vodolazzzz 3 ppp 1388281254 ...5 vasiliy 1 еее 1388281222 ... users: user_id name email ...1 vodolazzzz vodolazzzz@bk.ru ...2 vasiliy vasiliy75@mail.ru ...3 kate ilovemammy@inbox.ru ... Выборку с группировкой для каждого пользователя делаю примерно так: Код: plsql 1. 2. 3. 4. 5. 6. Помогите как их теперь обьединить. Надеюсь на вашу помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 03:47:24 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
а перед тем, как постить на форум не пробовал поднять свою кипящую голову и почитать F.A.Q.-и и закрепленные на верху топики? Там же в аккурат есть ответ на твой вопрос: FAQ: Выборка первой/последней записи в группах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 09:08:19 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, я читал этот топик, но это не то - это уже ПОСЛЕ группировки выборка последней записи. Мне же нужно их для начала как то правильно сгруппировать, но моих знаний в SQL не хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 16:35:47 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
vodolazzzzдиалогов многоЧто такое "диалог" в терминах ваших таблиц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 16:39:31 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
miksoft Диалог - это переписка двух людей, то есть user_from -> user_tovodolazzzz3 и в обратку user_from -> user_toKate1 Запрос, который предоставлял я выше - группирует все сообщения от пользователя ко мне и от меня к пользователю, осталось вот только их объединить и выбрать из них последнюю запись по дате и чья она была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 16:51:14 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
vodolazzzzя читал этот топик, но это не то - это уже ПОСЛЕ группировки выборка последней записи.Значит плохо читал. К примеру, варианты на not-exists-подзапросах или на left join-ах вообще не содержат группировок, но задачу выборки первой/последней записи в группе - успешно решают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 22:09:48 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
Открутите голову тому альтернативно мыслящему существу, которое в таблице messages адресата сделало идентификатором, а отправителя - именем-текстовкой. Это для начала. Далее - если нужно последнее для ДИАЛОГА, то группить надо по ДИАЛОГУ. Если бы у тебя была нормальная человеческая структура, то это была бы группировка по, скажем, (min(id_from, id_to), max(id_from, id_to)). А в текущей дебильной структуре то же придётся делать с изрядными извращениями - прикрутить таблицу юзеров и получить сравнимые категории для группировки. Впрочем, куда ты нафиг денешься? делай... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 22:12:40 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх , задача выборки первой-последней, это вторичная задача, не решив главную, к ней приступать не стоит. Akina , спасибо вам за понимание, это ужас иметь такую структуру и по возможности я бы ёё создателям руки поотрывал, но что имеем, то имеем ( Left join'ом добился вывода id - вместо имени, это видно из первого запроса - user_id. Akinaгруппить надо по ДИАЛОГУ. Этого я и пытаюсь добиться( Akinaполучить сравнимые категории для группировки Если не сложно объяснить - что это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 21:13:39 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
vodolazzzzAkinaполучить сравнимые категории для группировки Если не сложно объяснить - что это? Связав две таблицы, вместо пары (txt_user_from - id_user_to) получить либо два ID, либо два TXT. А дальше группить как я показал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 21:53:11 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
Akira, Спасибо, что отвечаете, но как я писал выше - пары я добился, сделав джоин таблицы пользователей и вытащив оттуда id пользователя вместо name. По вашему запросу группировки мускул ругается на синтаксис: phpMyAdminYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' user_to), max(user_id, user_to)) LIMIT 0, 30' at line 5) Собственно запрос: Код: plsql 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 05:08:00 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
Есссно. Min и Max - групповые функции, и в GROUP BY появляться не могут. Изволь их проэмулировать (скажем, на основе CASE). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 13:58:45 |
|
||
|
Помогите с запросом, голова кипит уже
|
|||
|---|---|---|---|
|
#18+
AkinaЕсссно. Min и Max - групповые функции, и в GROUP BY появляться не могут. Изволь их проэмулировать (скажем, на основе CASE). LEAST() и GREATEST() . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 18:31:28 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38518781&tid=1835439]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 309ms |

| 0 / 0 |
