|
|
|
Выборка из двух таблиц с сортировкой по дате
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Столкнулся с такой проблемой, есть 2 таблицы: -- Table topic CREATE TABLE topic ( id int NOT NULL AUTO_INCREMENT, topic_name varchar(100) NOT NULL, date_t timestamp NOT NULL, CONSTRAINT topic_pk PRIMARY KEY (id) ); -- Table answer CREATE TABLE answer ( id int NOT NULL AUTO_INCREMENT, text_answer varchar(500) NOT NULL, topic_id int NOT NULL, date_a timestamp NOT NULL, CONSTRAINT answer_pk PRIMARY KEY (id) ); -- Reference: answer_topic (table: answer) ALTER TABLE answer ADD CONSTRAINT answer_topic FOREIGN KEY answer_topic (topic_id) REFERENCES topic (id); В таблице Topic содержатся темы, в таблице Answer содержатся ответы на эти темы (одной теме может соответствовать множество ответов, поле topic_id в таблице ответов). Но может быть и такое, что тема создана, но ни одного ответа на неё ещё нету. Суть задачи в следующем: сделать выборку из таблицы Topic, но с таким условием, что темы должны быть отсортированы по дате последнего ответа. То есть те темы которые были созданы недавно или на них недавно ответили должны быть вверху. Я кое-какой запрос сделал: SELECT distinct t.id, t.topic_name, t.date_t FROM TOPIC t, ANSWER a WHERE t.id=a.topic_id GROUP BY a.date_a, t.date_t DESC Но проблема в том, что он не учитывает того, что тема уже создана, но ни одного ответа на неё ещё нету. Подскажите, пожалуйста, возможно ли это сделать с помощью одного запроса? Или правильнее сделать 2 отдельных запроса и потом уже как-то на уровне логики сравнивать их результаты? Буду благодарен любым подсказкам и советам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 14:38 |
|
||
|
Выборка из двух таблиц с сортировкой по дате
|
|||
|---|---|---|---|
|
#18+
Иван198925он не учитывает того, что тема уже создана, но ни одного ответа на неё ещё нету. У тебя используется внутреннее связывание, поэтому все такие записи и отсеиваются. Нужно стороннее связывание (LEFT JOIN). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 15:01 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=31&tid=1340783]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 326ms |

| 0 / 0 |
