Получить вопрос с новым ответом SQL Query - PullRequest
0 голосов
/ 14 марта 2009

У меня есть модель как:

Вопрос - Я бы - Создано

Ответ - Я бы - Создано на - QuestionID

Нет, я хочу получить первый вопрос с самым новым ответом.

Я использую SQL Server 2005.

Спасибо, Chris

Ответы [ 4 ]

1 голос
/ 14 марта 2009
Select top 1 *
from questions, answers
where question.id = answers.questionid
order by answers.createdon desc
0 голосов
/ 14 марта 2009

Я бы попробовал что-то вроде этого

SELECT Id, CreatedOn    
FROM Question Q    
WHERE Q.id IN    
(SELECT DISTINCT TOP 5 A.QuestionID FROM Answer A ORDER BY A.CreatedOn)
0 голосов
/ 14 марта 2009
select top 1 Question from questions
  inner join answers on questions.Id = answers.QuestionId
order by answers.CreatedOn desc

Извините за задержку с ответом на комментарий, раньше у меня не было времени проверить его:

Это становится сложнее, но что-то вроде этого должно работать:

select top 5 Question from questions
  inner join answers on questions.Id = answers.QuestionId
GROUP BY Question
ORDER BY max(answers.CreatedOn) desc

Похоже, что это стандартный шаблон для эффективного получения отдельного набора данных из таблицы без включения порядка по столбцам в набор записей.

Помните, что количество элементов, которые вы хотите выбрать (в данном случае 5), должно быть постоянным в SQL. Если у вас есть преимущество использования чего-то вроде LINQ to SQL, вы можете записать это в LINQ и получить в качестве переменной сумму тэка.

Итак, в ответ на последний комментарий вы просто добавили бы max (answers.CreatedOn) в оператор выбора:

select top 5 Question, max(answers.CreatedOn)
from questions
  inner join answers on questions.Id = answers.QuestionId
GROUP BY Question
ORDER BY max(answers.CreatedOn) desc
0 голосов
/ 14 марта 2009

Примерно так:

ВЫБРАТЬ ТОП 1 Вопрос ОТ ВОПРОСОВ СОЕДИНЕНИЯ Ответы на вопросы. Идентификатор = ответы. Вопрос-ответ. ЗАКАЗАТЬ ответы. Создано на DESC;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...