SQL - Создание базы данных и запрос к ней - PullRequest
1 голос
/ 20 марта 2019

Мне нужно ответить на следующие инструкции, и мне интересно, нахожусь ли я на правильном пути, чтобы ответить на него.

Инструкции

Создайте базу данных для следующего сценария: Вы должны отслеживать всех собак на соревнованиях по ловкости.У них есть разные события для каждого соревнования, и у каждой собаки есть оценка по каждому соревнованию.Кроме того, напишите SQL-запросы, чтобы вернуть всех собак в соревновании, события, в которых участвует каждая собака, и счет, который они получили в этом событии.

CREATE DATABASE Competition (
  Dogs CHAR(30) NOT NULL,
  Score INT NOT NULL,
  Event CHAR(30) NOT NULL,
)

SELECT * 
FROM Competition

Это, кажется, слишком малопросто, но удовлетворяет ли это всем приведенным инструкциям?

РЕДАКТИРОВАТЬ

Будет ли работать это решение?

CREATE TABLE Dogs (
   Name STRING,
   EventId INT
)
CREATE TABLE Events (
   Name STRING,
   Id INT
)
CREATE TABLE Scores (
   Score INT,
   EventId INT
)
SELECT name
FROM Dogs 
INNER JOIN Events On Events.Id = Dogs.EventId
INNER JOIN Scores On Events.Id = Scores.Event.Id

Ответы [ 2 ]

2 голосов
/ 20 марта 2019

Ваши объекты перепутаны в синтаксисе.База данных - это логический контейнер, внутри которого вы создаете свои таблицы.Например, если вы используете T-SQL:

CREATE DATABASE DogCompetition;
USE DogCompetition;
CREATE TABLE Dogs 
(Dog VARCHAR(30) PRIMARY KEY);
CREATE TABLE Events 
(Event VARCHAR(30) PRIMARY KEY);
CREATE TABLE DogEventScores 
(Dog VARCHAR(30) REFERENCES Dogs(Dog), 
Event VARCHAR(30) REFERENCES Events (Event),
Score INT NOT NULL,
PRIMARY KEY (Dog, Event)
);
INSERT INTO Dogs (Dog) VALUES ('Charlie');
INSERT INTO Events (Event) VALUES ('Running');
INSERT INTO DogEventScores (Dog, Event, Score) VALUES ('Charlie', 'Running', 8);
SELECT * FROM DogEventScores;

HTH

1 голос
/ 20 марта 2019

Вы должны создать свой стол, как показано ниже.

Собака и Соревнование имеют много-много-много отношений, а Событие является столом-посредником.

Dog (DogId, DogName)

Event(DogId, CompetitionId, EventName, Score)

Competition(CompetitionId, Name)

Запросы на возвращение всех собак в соревновании // вернуть всех собак для идентификатора соревнования, равного 1

select * from Dog inner join Event on Dog.DogId = Event.DogId where Event.CompetitionId = 1 

События, в которых участвует каждая собака, и оценка, которую они получили в этом событии.

   select Event.EventName, sum(Score) from Dog inner join Event on Dog.DogId = Event.DogId 
where Dog.DogName = 'Misa' group by Event.EventName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...