powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL-запрос...
7 сообщений из 7, страница 1 из 1
SQL-запрос...
    #32155587
Adry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица Topic (topic_id, name) и таблица Message(message_id, topic_id, text, date) (т.е. Тема и Сообщение). Одной записи в Topic соответствует много в Message. Нужно осуществить выборку тем в порядке убывания по дате последних сообщений. (Т.е. первая тема та, у которой самое позднее из всех сообщений для всех тем и т.д. по убывающей.) Сколько ни бьюсь, не выходит.. Затмение какое-то :(
...
Рейтинг: 0 / 0
SQL-запрос...
    #32155663
Pups The RAPtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так подойдет?
Код: plaintext
1.
2.
3.
4.
select *
from topic t, message m
where t.id = m.topic_id
order by m.date desc
...
Рейтинг: 0 / 0
SQL-запрос...
    #32156147
Adry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так он вернет абсолютно все сообщения в порядке убывания. Т.е. может быть первых три сообщения одной темы, потом два другой и т.д. А мне нужно список тем(т.е. каждая тема в этом списке должна быть только один раз, и упорядочены они должны быть по дате последних сообщений в каждую тему).
...
Рейтинг: 0 / 0
SQL-запрос...
    #32156186
Pups The RAPtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, вот теперь более понятно!

ИМХО в данном случае не обойдешься чистым SQL. Камень - "каждая тема в этом списке должна быть только один раз, и упорядочены они должны быть по дате последних сообщений в каждую тему". Вернее даже два камня. По отдельности их можно обойти, а вот вместе что-то не получается.

1. Можно сначала инсертить данные во временную таблицу, а потом выбирать из нее. Но одним инсертом не обойдешься. Я на Oracle писал хранимую процедуру, которая заполняла мне табличку в определенном прорядке данными из нескольких других таблиц, и потом сначала вызывал процедуру и уже после нее выбирал данные из временной таблицы.

2. Можно реализовавать это средствами языка программирования. Мне кажется это будет проще чем извращаться с SQL.
...
Рейтинг: 0 / 0
SQL-запрос...
    #32156523
Adry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробую писать так:
SELECT DISTINCT t.Topic_id, t.Title FROM Message m, Topic t WHERE m.Topic_id=t.Topic_id ORDER BY m.Msg_date DESC

m.Msg_date - дата сообщения, остальное я думаю понятно
По идее DISTINCT должен возвращать _разные_ значения пар <номер темы>-<название темы>. Но этого не происходит! Разницы в результате нет, что с DISTINCT, что без него:( А если бы это сработало, то все было бы как мне нужно...
...
Рейтинг: 0 / 0
SQL-запрос...
    #32156611
Chira
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Был похожий вопрос\r
/topic/31393\r
Можно обойтись чистым SQL, правда двумя.\r
Могу написать 1 запрос , но он будет работать гораздо дольше.
...
Рейтинг: 0 / 0
SQL-запрос...
    #32156622
diman555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а через DISTINCT нельзя - он только с одной колонкой может работать в данном случае...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SQL-запрос...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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