Скажем, у меня есть набор результатов, который может содержать одно или несколько значений, но я всегда хочу только одно значение в результате, и конкретные значения стоят больше, чем другие.
Как бы я решил это в SQL, чтобы я мог использовать его в подзапросе?
Пример (специфичный для T-SQL, с акцентом, с которым я работаю):
У меня есть таблица:
tChore(ChoreId int primary key, ChoreDescription nvarchar(15))
, который загружен всеми типами дел по дому. У меня также есть другая таблица:
tDayChores(
DayId int primary key,
ChoreId int foreign key references tChore(ChoreId)
)
Который загружен днями и делами в отношениях «многие ко многим».
Конечно, есть третья таблица, содержащая названия всех дней недели.
Теперь, допустим, я хотел бы получить один и только один день на уборку. Я предпочитаю делать это по средам, но если это не запланировано, то я бы хотел сделать это по четвергам, и, в свою очередь, если это не запланировано, это не имеет значения, любой день - это хорошо.
Один из способов ограничить набор результатов одной строкой - сделать это:
select top(1)
DayId
from
tDayChores DC
inner join tChore C
on C.ChoreId = DC.ChoreId
where
C.ChoreDescription = 'vacuum'
Однако, если вакуум запланирован на понедельник и среду, в результате я получу понедельник, и я бы хотел, чтобы среда была наивысшим.