|
SQL-запрос...
|
|||
---|---|---|---|
#18+
Есть таблица Topic (topic_id, name) и таблица Message(message_id, topic_id, text, date) (т.е. Тема и Сообщение). Одной записи в Topic соответствует много в Message. Нужно осуществить выборку тем в порядке убывания по дате последних сообщений. (Т.е. первая тема та, у которой самое позднее из всех сообщений для всех тем и т.д. по убывающей.) Сколько ни бьюсь, не выходит.. Затмение какое-то :( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 00:01 |
|
SQL-запрос...
|
|||
---|---|---|---|
#18+
Так подойдет? Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 08:44 |
|
SQL-запрос...
|
|||
---|---|---|---|
#18+
Так он вернет абсолютно все сообщения в порядке убывания. Т.е. может быть первых три сообщения одной темы, потом два другой и т.д. А мне нужно список тем(т.е. каждая тема в этом списке должна быть только один раз, и упорядочены они должны быть по дате последних сообщений в каждую тему). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 14:09 |
|
SQL-запрос...
|
|||
---|---|---|---|
#18+
А, вот теперь более понятно! ИМХО в данном случае не обойдешься чистым SQL. Камень - "каждая тема в этом списке должна быть только один раз, и упорядочены они должны быть по дате последних сообщений в каждую тему". Вернее даже два камня. По отдельности их можно обойти, а вот вместе что-то не получается. 1. Можно сначала инсертить данные во временную таблицу, а потом выбирать из нее. Но одним инсертом не обойдешься. Я на Oracle писал хранимую процедуру, которая заполняла мне табличку в определенном прорядке данными из нескольких других таблиц, и потом сначала вызывал процедуру и уже после нее выбирал данные из временной таблицы. 2. Можно реализовавать это средствами языка программирования. Мне кажется это будет проще чем извращаться с SQL. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 14:34 |
|
SQL-запрос...
|
|||
---|---|---|---|
#18+
Пробую писать так: 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, что без него:( А если бы это сработало, то все было бы как мне нужно... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.05.2003, 23:02 |
|
SQL-запрос...
|
|||
---|---|---|---|
#18+
Был похожий вопрос\r /topic/31393\r Можно обойтись чистым SQL, правда двумя.\r Могу написать 1 запрос , но он будет работать гораздо дольше. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.05.2003, 15:02 |
|
|
start [/forum/topic.php?fid=47&msg=32155663&tid=1856035]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 425ms |
0 / 0 |