Расчетный столбец - SQL - Футбольные команды - PullRequest
0 голосов
/ 27 июня 2018

Я хотел бы добавить новый второй столбец в таблицу «команд», которая является представителем футбольного рейтинга Премьер-лиги (Великобритания). На данный момент таблица содержит только названия каждой футбольной команды.

Столбец будет называться «Сыграно», и в нем будет указано количество игр, которые сыграла каждая команда. Я хотел бы рассчитать это число (целочисленный тип данных) из отдельной таблицы, называемой «игры», в которой записывается исторический журнал игр. Скорее всего, это будет связано с использованием встроенной в SQL функции «COUNT».

Я пытался использовать функцию, чтобы помочь мне сделать это, но в настоящее время она вставляет все значения как '0'

CREATE FUNCTION [dbo].[GetPlayed](@Team VARCHAR)
RETURNS INT
BEGIN
   RETURN(SELECT COUNT(*)
   FROM games
   WHERE games.Home = @Team OR games.Away = @Team);
END;

ALTER TABLE teams
ADD Played AS GetPlayed(teams.Team)

Таблицы:

команд:

```Team
Arsenal
Bournemouth
Burnley
Chelsea
Crystal Palace
Everton
Hull City
Leicester City
Liverpool
Manchester City
Manchester United
Middlesbrough
Southampton
Stoke City
Sunderland
Swansea City
Tottenham Hotspur
Wat"For"d
West Bromwich Albion
West Ham United
```

игры:

gameID  Home    HomeScore   Away    AwayScore   GameDate
4   Arsenal 2   Chelsea 0   2018-05-26
5   Arsenal 5   Bournemouth 0   2018-04-22
6   Arsenal 1   Leicester City  1   2018-03-15
7   Bournemouth 5   Liverpool   0   2018-04-22
8   Burnley 5   Bournemouth 0   2018-04-22
9   Burnley 1   Swansea City    2   2017-11-22
10  Stoke City  0   Burnley 0   2018-01-08
11  Chelsea 1   Middlesborough  2   2017-11-22
12  Southampton 0   Chelsea 0   2018-01-01
13  Crystal Palace  1   Everton 2   2018-03-26
14  Manchester United   4   Crystal Palace  0   2018-06-01
15  Crystal Palace  0   Southampton 1   2018-04-16
16  Everton 1   Hull City   2   2017-11-20
17  Manchester City 4   Everton 0   2017-11-20
18  Hull City   0   Burnley 0   2018-06-01
19  Sunderland  2   Hull City   0   2018-06-15
20  Leicester City  3   Tottenham Hotspur   1   2017-09-20
21  Swansea City    2   Leicester City  5   2018-02-15
22  Sunderland  0   Leicester City  1   2018-01-29
23  Liverpool   3   Tottenham Hotspur   0   2018-02-28
24  Stoke City  1   Liverpool   2   2017-09-19
25  Manchester City 2   Manchester United   4   2018-05-02
26  Middlesborough  1   Southampton 1   2018-02-08
27  Stoke City  2   Middlesborough  2   2017-08-19
28  Swansea City    0   Manchester United   5   2018-06-27
29  Sunderland  1   Tottenham Hotspur   2   2017-09-01

Любая помощь будет высоко ценится!

Спасибо, Роб

1 Ответ

0 голосов
/ 27 июня 2018

VARCHAR без размера по умолчанию равен 1 символу, вам нужно изменить объявление функции

CREATE FUNCTION [dbo].[GetPlayed](@Team VARCHAR(32))
.....

Без размера ваш параметр @ Team получит только первую букву переданного вами значения команды, и, конечно, оператор WHERE не сможет найти никакого результата в вашей игровой таблице

...