Как добавить столбец с фиксированной позицией в мой SQL-запрос?

0

У меня есть таблица команд

CREATE TABLE teams(id int primary key auto_increment,tname char(32) unique);

У меня также есть таблица игр

CREATE TABLE games(id int primary key auto_increment, date datetime,
               hteam int, ateam int, hscore tinyint,ascore tinyint);

Это запрос sql, который отображает таблицу лиг

SELECT
tname AS Team, Sum(P) AS P,Sum(W) AS W,Sum(D) AS D,Sum(L) AS L,
SUM(F) as F,SUM(A) AS A,SUM(GD) AS GD,SUM(Pts) AS Pts
FROM(
SELECT
hteam Team,
1 P,
IF(hscore > ascore,1,0) W,
IF(hscore = ascore,1,0) D,
IF(hscore < ascore,1,0) L,
hscore F,
ascore A,
hscore-ascore GD,
CASE WHEN hscore > ascore THEN 3 WHEN hscore = ascore THEN 1 ELSE 0 END PTS
FROM games
UNION ALL
SELECT
ateam,
1,
IF(hscore < ascore,1,0),
IF(hscore = ascore,1,0),
IF(hscore > ascore,1,0),
ascore,
hscore,
ascore-hscore GD,
CASE WHEN hscore < ascore THEN 3 WHEN hscore = ascore THEN 1 ELSE 0 END
FROM games
) as tot
JOIN teams t ON tot.Team=t.id
GROUP BY Team
ORDER BY SUM(Pts) DESC, SUM(GD) DESC, SUM(F) DESC;

Вероятно, прямо, но я не могу понять, как это сделать, как добавить в столбец "позиции", представленный как "POS" в левой левой части таблицы лиги, который отобразит каждое ранжирование команд в таблице, например, автоматическое приращение?

Спасибо! :)

ОБНОВИТЬ:

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

SET @rownum := 0;
SELECT @rownum := @rownum + 1 AS rank, tname AS Team, Sum(P) AS P,Sum(W) AS 
W,Sum(D) AS D,Sum(L) AS L,
SUM(F) as F,SUM(A) AS A,SUM(GD) AS GD,SUM(Pts) AS Pts
FROM(
SELECT
hteam Team,
1 P,
IF(hscore > ascore,1,0) W,
IF(hscore = ascore,1,0) D,
IF(hscore < ascore,1,0) L,
hscore F,
ascore A,
hscore-ascore GD,
CASE WHEN hscore > ascore THEN 3 WHEN hscore = ascore THEN 1 ELSE 0 END PTS
FROM games
UNION ALL
SELECT
ateam,
1,
IF(hscore < ascore,1,0),
IF(hscore = ascore,1,0),
IF(hscore > ascore,1,0),
ascore,
hscore,
ascore-hscore GD,
CASE WHEN hscore < ascore THEN 3 WHEN hscore = ascore THEN 1 ELSE 0 END
FROM games
) as tot
JOIN teams t ON tot.Team=t.id
GROUP BY Team
ORDER BY SUM(Pts) DESC, SUM(GD) DESC, SUM(F) DESC;
  • 0
    Какая лига? Разница голов оценивается по-разному в разных лигах.
  • 0
    Он основан на английской премьер-лиге
Показать ещё 1 комментарий
Теги:
database
phpmyadmin
localhost

1 ответ

0

Это то, что вы ищете?

SET @rownum := 0;
SELECT @rownum := @rownum + 1 AS rank, <other columns>
FROM <tables >
where ..
  • 0
    У меня была тренировка, но она отображает строки как NULL в столбце ранга. Есть идеи?
  • 0
    Я выполняю запрос в MySQL Workbench, и он правильно отображает ранг увеличения. Как вы выполняете запрос?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню