Ich habe ein Modell wie:Erhalten Frage mit neuesten Antwort SQL Query
Frage - Id - CreatedOn
Antwort - Id - CreatedOn - QuestionID
Nein, ich erhalten möchten die erste Frage mit der neuesten Antwort.
Ich bin mit SQL Server 2005.
Danke, Chris
Ich habe ein Modell wie:Erhalten Frage mit neuesten Antwort SQL Query
Frage - Id - CreatedOn
Antwort - Id - CreatedOn - QuestionID
Nein, ich erhalten möchten die erste Frage mit der neuesten Antwort.
Ich bin mit SQL Server 2005.
Danke, Chris
Etwas wie folgt aus:
SELECT TOP 1 Frage von Fragen Antworten ON Questions.Id = Answers.QuestionID ORDER BY Antworten JOIN .CreatedOn DESC;
Nicht SQL Server-Syntax – gbn
select top 1 Question from questions
inner join answers on questions.Id = answers.QuestionId
order by answers.CreatedOn desc
Sorry für die Verzögerung auf die Bemerkung bei der Beantwortung, ich habe nicht früher Zeit haben, um es zu testen:
Dies wird noch komplizierter, aber so etwas wie dies funktionieren sollte:
select top 5 Question from questions
inner join answers on questions.Id = answers.QuestionId
GROUP BY Question
ORDER BY max(answers.CreatedOn) desc
Dies scheint die standard pattern zu sein, um effektiv einen eindeutigen Satz von Daten aus einer Tabelle zu erhalten, ohne die Reihenfolge nach Spalte in den Datensatz aufzunehmen.
Beachten Sie, dass die Anzahl der Elemente, die Sie auswählen möchten (in diesem Fall 5), in SQL eine Konstante sein muss. Wenn Sie den Vorteil haben, LINQ to SQL zu verwenden, könnten Sie dies in LINQ schreiben und die Take-Menge als Variable haben.
So, als Reaktion auf den neuesten Kommentar, dann würden Sie nur hinzufügen, max (answers.CreatedOn) an die Select-Anweisung:
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
Hallo, Wenn ich die Top 5 bekommen möchte, habe ich Duplikate. Können Sie mir sagen, wie Sie die Abfrage für verschiedene Top-5-Fragen erstellen? – Christian
Hört sich gut an. Nur eine letzte Frage. Ich möchte auch das Datum der letzten Antwort aus der Antworttabelle in der Abfrage abrufen. Also QuestionId und sein verwandter Alias "LastAnswerDate" in einer Abfrage. – Christian
Select top 1 *
from questions, answers
where question.id = answers.questionid
order by answers.createdon desc
würde ich versuchen, so etwas wie dieses
SELECT Id, CreatedOn
FROM Question Q
WHERE Q.id IN
(SELECT DISTINCT TOP 5 A.QuestionID FROM Answer A ORDER BY A.CreatedOn)
Ich habe ein Problem: A.CreatedOn wird nicht akzeptiert, weil es nicht im ausgewählten Teil der Unterabfrage ist, irgendein Tipp? – Christian
Was, wenn Sie das versuchen? DISTINCT Id SELECT FROM CreatedOn Frage Q WHERE Q.id IN (SELECT FROM TOP 5 Antwort A.QuestionID A WHERE A.QuestionId = Q.id ORDER BY A.CreatedOn) Die SQL erlaubt keine eindeutige Abfrage mit der Reihenfolge nach –
In einer Reihe? zB älteste Frage mit letzter Antwort? – gbn