я создал три таблицы таким образом, чтоSQL запрос, чтобы найти средние
CREATE TABLE guest(
name varchar(100),
ranking int,
PRIMARY KEY (name)
);
CREATE TABLE room(
roomname varchar(100),
wallcolor varchar(100),
rating int,
PRIMARY KEY(roomnane)
);
CREATE TABLE reservation(
name varchar(100),
roomname varchar(100),
day varchar(100),
moveinday int,
moveoutday int,
PRIMARY KEY(roomname, day, start, finish),
FOREIGN KEY(roomname) REFERENCES room(roomname),
FOREIGN KEY(name) REFERENCES guest(name)
);
Я пытаюсь создать два запроса
Для каждого заказанного номера, перечислите средний рейтинг гостей, имеющих защищены эта комната. У меня возникли проблемы с перечислением среднего значения для каждой комнаты. Вот что я пытался
select reservation.roomname, AVG(guest.ranking) from reservation, room, guest where reservation.roomname == room.roomname AND reservation.name = guest.name
Это не дает желаемого результата. Как я могу исправить свой запрос?
- Запрос, чтобы проверить, нет ли противоречивых резерваций для комнат. (Тот же номер не может быть зарезервирован для множества людей старше moveinday и moveoutday Я не знаю, как начать для этого
Почему вы храните информацию о типе даты как varchar (100) и moveinday и moveoutday как целые числа? – jpw
У вас будет действительно страшное время, пытаясь управлять датой и временем, если вы используете varchars и целые числа. Система бронирования номеров должна использовать даты, которые являются основными для цели бронирования. Я также предлагаю вам иметь таблицу целых чисел (иногда называемую «таблицей таблицы»), которая очень полезна для вашего запроса 2 –
и почему рейтинг гостей не в таблице бронирования? что произойдет, если один и тот же гость останется не раз, в разных комнатах, и хочет ранжировать каждого? Является ли этот вопрос домашним заданием? –