Angenommen, ich habe eine Ergebnismenge, die einen oder mehrere Werte enthalten kann, aber ich möchte immer nur einen Wert im Ergebnis haben, und bestimmte Werte sind mehr wert als andere.Wie erstelle ich eine übliche Rangfolge meiner Ergebnismenge in SQL?
Wie würde ich das in SQL lösen, damit ich es in einer Unterabfrage verwenden kann?
Beispiel (T-SQL-spezifisch, das ist der Akzent I mit arbeiten):
Ich habe eine Tabelle:
tChore(ChoreId int primary key, ChoreDescription nvarchar(15))
, die mit allen Arten von Aufgaben belastet wird. Ich habe auch eine andere Tabelle:
tDayChores(
DayId int primary key,
ChoreId int foreign key references tChore(ChoreId)
)
, die mit Tag und Aufgaben in einer Viele-zu-viele-Beziehung geladen wird.
Es gibt natürlich eine dritte Tabelle, die den Namen aller Wochentage enthält.
Jetzt sagen wir, ich möchte einen und nur einen Tag zum Vakuum bekommen. Ich mache es lieber mittwochs, aber wenn das nicht geplant ist, würde ich es gerne donnerstags machen, und wenn das nicht geplant ist, ist es egal, jeder Tag ist in Ordnung.
Eine Möglichkeit, die Ergebnismenge zu begrenzen, um eine Reihe wäre, dies zu tun:
select top(1)
DayId
from
tDayChores DC
inner join tChore C
on C.ChoreId = DC.ChoreId
where
C.ChoreDescription = 'vacuum'
Wenn jedoch Vakuum für Montag und Mittwoch geplant ist, dann würde ich Montag als Ergebnis erhalten, und ich d mag es, am Mittwoch den höchsten Rang zu erreichen.
Können Sie Ihre Antwort löschen und dieses Detail der Frage selbst hinzufügen –
Sicher, aber es schien richtiger, den Lösungsvorschlag im Antwortteil zu behalten. Schaut OK aus? –