2009-03-14 7 views
0

との質問を取得し、私はモデルを持っています最新の答えで最初の質問。最新の回答SQLクエリ

私は、SQL Serverを使用しています2005年

おかげで、 クリス

+0

1行で?例えば最新の答えで最も古い質問? – gbn

答えて

0
このような

何か:回答BY Questions.Id = Answers.QuestionID ORDER ON質問の回答に参加FROM

のSELECT TOP 1質問.CreatedOn DESC;コメントへの返信が遅れて申し訳ありません

+0

SQL Serverの構文でない – gbn

0
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 

これは、レコードセットの列順を含まずに、テーブルから異なるデータセットを効率的に取得するためのものです。standard pattern

は、あなたが(この場合は5)を選択する要素の数は、SQLで一定になるように持っていることに注意してください。 LINQ to SQLのようなものを使用する利点がある場合は、LINQでこれを書いて、その量を変数として持つことができます。

ので、最新のコメントに反応して、あなただけのselect文に最大(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

こんにちは、私はトップ5を取得したい場合、私は重複している。個別のトップ5の質問のクエリを作成する方法を教えてください。 – Christian

+0

いいですね。ちょうど最後の質問です。私は、クエリの回答テーブルからのlates回答の日付も取得したい。だからQuestionIdとその関連エイリアス "LastAnswerDate"を1つのクエリで。 – Christian

1
Select top 1 * 
from questions, answers 
where question.id = answers.questionid 
order by answers.createdon desc 
0

私はこの

SELECT Id, CreatedOn  
FROM Question Q  
WHERE Q.id IN  
(SELECT DISTINCT TOP 5 A.QuestionID FROM Answer A ORDER BY A.CreatedOn) 
ような何かをしようとするだろう
+0

私は問題があります:A.CreatedOnはサブクエリの選択部分にないので、受け入れられません。 – Christian

+0

これを試すとどうなりますか? 、IN Q.id (TOP 5を選択しA.CreatedOn BY A.QuestionId = Q.id ORDER回答FROM をA.QuestionID)質問AS Q SQLは異なるID、CreatedOn を選択注文との間で明確なクエリを行うことを許可していない –