У меня есть эта структура таблицы Дневник:Как получить MAX (Час) и MIN (Час) для каждого дня в этом запросе?
CREATE TABLE Diary
(
[IdDiary] bigint,
[IdDay] numeric(18,0)
);
INSERT INTO Diary ([IdDiary], [IdDay])
values
(51, 1),
(52, 2),
(53, 5);
И эту другую структуру таблицы DiaryTimetable:
CREATE TABLE DiaryTimetable
(
[IdDiary] bigint,
[Hour] varchar(50)
);
INSERT INTO DiaryTimetable ([IdDiary], [Hour])
VALUES
(51, '09:00'),
(51, '09:30'),
(51, '10:00'),
(51, '10:30'),
(51, '11:00'),
(51, '11:30'),
(52, '11:00'),
(52, '11:30'),
(52, '12:00'),
(52, '12:30'),
(52, '13:00'),
(52, '13:30'),
(53, '15:00'),
(53, '15:30'),
(53, '16:00'),
(53, '16:30');
В таблице Дневник содержит IdDiary и IdDay это количество дней, например:
Monday --> 1
Tuesday --> 2
Wednesday --> 3
Thursday --> 4
Friday --> 5
Saturday --> 6
Sunday --> 7
Таблица DiaryTimetable содержит идиперию и час. Я хочу получить максимальный час и мин. Час в таблице. DiaryTimetable для каждого дня отображается в таблице дневника. Если я поставлю этот запрос, результат будет равен только максимальному часу и минутному часу для всего запроса:
select MAX(Hour), MIN(Hour) from DiaryTimetable
inner join Diary on
DiaryTimetable.IdDiary = Diary.IdDiary
в результате очист мне нужно будет что-то вроде этого:
IdDiary IdDay Min Hour Max Hour
----- ----- -------- ---------
51 1 09:00 11:30
52 2 11:00 13:30
53 5 15:00 16:30
Как я могу получить это, спасибо?
Так что в таблице 'Diary' имеется столбец' IdDiary'. Из его имени я понимаю, что это первичный ключ таблицы, однозначно идентифицирующий запись. (Вы должны добавить это в свой оператор 'CREATE TABLE'.) Таким образом,' IdDay' - это информация, принадлежащая 'IdDiary'. Следовательно, «Дневник» не содержит дневников, а дневных дней. Да? Не может быть двух записей для того же 'IdDiary' в этой таблице. Это верно? (Может быть, вы должны подумать о лучшем имени таблицы.) И для каждой такой записи вы предоставляете «DiaryTimetable», показывающий часы дневного дня. Да? –
И почему вы храните час в виде строки? В чем причина использования «TIME», которая кажется подходящим типом? И почему вы держите день и время отдельно в двух таблицах, вместо того, чтобы иметь одну таблицу, просто содержащую дату-время? –
Это всего лишь быстрый пример, мне нужно было знать, как он бежал, чтобы учиться. Благодарю. –