Мне нужна ваша помощь, потому что я понятия не имею, как я могу это сделать:
У меня есть три таблицы MySQL:
pcs_clubs id, короткое имя
шт_candidates id, id_compet, id_club, id_season
pcs_matchs id, id_candidate_dom, id_candidate_ext, id_day, date_day, buts_dom, buts_ext, id_set_id_season, id_season*
Пример данных:
шт_клубов
id shortname
1 Barcelona
2 Real Madrid
3 Sevilla
4 Deportivo
5 Espanyol
6 Real Zaragoza
шт_кандидатов
id id_compet id_club id_season
1 1 1 1
2 1 2 1
3 1 3 1
4 1 4 1
5 1 5 1
6 1 6 1
шт_матч
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| id | id_candidate_dom | id_candidate_ext | id_day | date_match | buts_dom | buts_ext | id_season | id_compet | validation |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 1 | 1 | 6 | 1 | 2015-11-12 | 0 | 3 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 2 | 2 | 5 | 1 | 2015-11-12 | 2 | 2 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 3 | 3 | 4 | 1 | 2015-11-12 | 2 | 1 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 4 | 6 | 2 | 2 | 2015-11-17 | 3 | 1 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 5 | 4 | 1 | 2 | 2015-11-17 | 1 | 1 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 6 | 5 | 3 | 2 | 2015-11-17 | 1 | 2 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 7 | 3 | 6 | 3 | 2015-11-24 | 2 | 0 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 8 | 2 | 4 | 3 | 2015-11-24 | 3 | 1 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
| 9 | 1 | 5 | 3 | 2015-11-24 | 4 | 1 | 1 | 1 | 1 |
+----+------------------+------------------+--------+------------+----------+----------+-----------+-----------+------------+
Следующий запрос MySQL успешно генерирует таблицу лиг желаемого соревнования и сезона:
SELECT
shortname 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
id_candidate_dom Team,
1 P,
IF(buts_dom > buts_ext,1,0) W,
IF(buts_dom = buts_ext,1,0) D,
IF(buts_dom < buts_ext,1,0) L,
buts_dom F,
buts_ext A,
buts_dom-buts_ext GD,
CASE WHEN buts_dom > buts_ext THEN 3 WHEN buts_dom = buts_ext THEN 1 ELSE 0 END PTS
FROM pcs_matchs
UNION ALL
SELECT
id_candidate_ext,
1,
IF(buts_dom < buts_ext,1,0),
IF(buts_dom = buts_ext,1,0),
IF(buts_dom > buts_ext,1,0),
buts_ext,
buts_dom,
buts_ext-buts_dom GD,
CASE WHEN buts_dom < buts_ext THEN 3 WHEN buts_dom = buts_ext THEN 1 ELSE 0 END
FROM pcs_matchs WHERE validation=1 AND id_compet=1 AND id_season=1
) as tot
JOIN pcs_candidates t ON tot.Team=t.id_club
JOIN pcs_clubs c ON c.id=t.id_club
GROUP BY Team
ORDER BY SUM(Pts) DESC, SUM(GD) DESC;
Текущий результат:
+------+---------------+---+---+---+---+---+----+-----+------------+
| | Team | P | W | D | L | F | A | GD | Pts |
+------+---------------+---+---+---+---+---+----+-----+------------+
| 1 | Sevilla | 3 | 3 | 0 | 0 | 6 | 2 | 4 | 9pts |
+------+---------------+---+---+---+---+---+----+-----+------------+
| 2 | Real Zaragoza | 3 | 2 | 0 | 1 | 6 | 3 | 3 | 6pts |
+------+---------------+---+---+---+---+---+----+-----+------------+
| 3 | Real Madrid | 3 | 1 | 1 | 1 | 6 | 6 | 0 | 4pts |
+------+---------------+---+---+---+---+---+----+-----+------------+
| 4 | Barcelona | 3 | 1 | 1 | 1 | 5 | 5 | 0 | 4pts |
+------+---------------+---+---+---+---+---+----+-----+------------+
| 5 | Deportivo | 3 | 0 | 1 | 2 | 3 | 6 | -3 | 1pts |
+------+---------------+---+---+---+---+---+----+-----+------------+
| 6 | Espanyol | 3 | 0 | 1 | 2 | 4 | 8 | -4 | 1pts |
+------+---------------+---+---+---+---+---+----+-----+------------+
Мне бы хотелосьдобавить дополнительный столбец (текущая форма) в таблицу лиги, основываясь на последних 5 матчах каждой команды перед текущей датой.Мне нужно просто добавить одного персонажа к матчам, если команда выиграла, затем W, если ничья, а затем D, если проиграл, то L. (если команда еще не сыграла 5 матчей, то не добавлять персонажа в колонку), как-то такэто:
Желаемый результат:
+---+---------------+---+---+---+---+---+---+----+------+-------------------------------------+
| | | | | | | | | | | Form (from newest result to oldest based on date of match) |
+---+---------------+---+---+---+---+---+---+----+------+-------------------------------------+
| 1 | Sevilla | 3 | 3 | 0 | 0 | 6 | 2 | 4 | 9pts | WWW |
+---+---------------+---+---+---+---+---+---+----+------+-------------------------------------+
| 2 | Real Zaragoza | 3 | 2 | 0 | 1 | 6 | 3 | 3 | 6pts | LWW |
+---+---------------+---+---+---+---+---+---+----+------+-------------------------------------+
| 3 | Real Madrid | 3 | 1 | 1 | 1 | 6 | 6 | 0 | 4pts | WLD |
+---+---------------+---+---+---+---+---+---+----+------+-------------------------------------+
| 4 | Barcelona | 3 | 1 | 1 | 1 | 5 | 5 | 0 | 4pts | WDL |
+---+---------------+---+---+---+---+---+---+----+------+-------------------------------------+
| 5 | Deportivo | 3 | 0 | 1 | 2 | 3 | 6 | -3 | 1pts | LDL |
+---+---------------+---+---+---+---+---+---+----+------+-------------------------------------+
| 6 | Espanyol | 3 | 0 | 1 | 2 | 4 | 8 | -4 | 1pts | LLD |
+---+---------------+---+---+---+---+---+---+----+------+-------------------------------------+
https://www.flashscore.com/standings/pvZBCt9T/vHE9SNDE/#live
Заранее спасибо!
ОБНОВЛЕННЫЙ ЗАПРОС (похоже, он работает)
SELECT
shortname 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, date_day AS dateday, group_concat(match_result ORDER BY date_day DESC)
FROM(
SELECT
id_candidate_dom Team,
1 P,
IF(buts_dom > buts_ext,1,0) W,
IF(buts_dom = buts_ext,1,0) D,
IF(buts_dom < buts_ext,1,0) L,
buts_dom F,
buts_ext A,
buts_dom-buts_ext GD,
CASE WHEN buts_dom > buts_ext THEN 3 WHEN buts_dom = buts_ext THEN 1 ELSE 0 END PTS,
CASE
WHEN buts_dom > buts_ext THEN 'W'
WHEN buts_dom = buts_ext THEN 'D'
WHEN buts_dom < buts_ext THEN 'L'
END match_result,
date_day
FROM pcs_matchs
UNION ALL
SELECT
id_candidate_ext,
1,
IF(buts_dom < buts_ext,1,0),
IF(buts_dom = buts_ext,1,0),
IF(buts_dom > buts_ext,1,0),
buts_ext,
buts_dom,
buts_ext-buts_dom GD,
CASE WHEN buts_dom < buts_ext THEN 3 WHEN buts_dom = buts_ext THEN 1 ELSE 0 END,
CASE
WHEN buts_dom < buts_ext THEN 'W'
WHEN buts_dom = buts_ext THEN 'D'
WHEN buts_dom > buts_ext THEN 'L'
END match_result,
date_day
FROM pcs_matchs WHERE validation=1 AND id_compet=1 AND id_season=1
) as tot
JOIN pcs_candidates t ON tot.Team=t.id_club
JOIN pcs_clubs c ON c.id=t.id_club
GROUP BY Team
ORDER BY SUM(Pts) DESC, SUM(GD) DESC