MySQL хранимая процедура? - PullRequest
       11

MySQL хранимая процедура?

0 голосов
/ 05 февраля 2012

У меня есть список из 20 команд и 360 матчей.это формирует 2 таблицы:

команды

  • id
  • name

fixtures

  • id
  • hometeam
  • homescore
  • awayteam
  • awayscore
  • datetime

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

возможная хранимая процедура

teamname, количество домашних побед из 5 последних домашних матчей, количествоничьи из последних 5 домашних матчей, количество ничьих из последних 5 выездных матчей, количество побед в гостях от последних 5 выездных матчей.

Я хочу использовать эти данные для использования в качестве текущей формы для каждой команды, а такжеэти данные будут использоваться во многих местах на моем сайте, мне действительно нужно найти лучший способ сделать это.

1 Ответ

0 голосов
/ 05 февраля 2012

Это можно сделать одним запросом, нужно два объединения:

SELECT t.name,
    SUM(IF(f_h.homescore > f_h.awayscore, 1, 0)) AS HomeWins,
    SUM(IF(f_h.homescore = f_h.awayscore, 1, 0)) AS HomeDraws,
    SUM(IF(f_a.awayscore > f_a.homescore, 1, 0)) AS AwayWins,
    SUM(IF(f_a.awayscore = f_a.homescore, 1, 0)) AS AwayDraws 
FROM team t 
LEFT JOIN fixtures f_h ON f_h.hometeam = t.id AND f_h.id IN (
    SELECT id    
    FROM fixtures
    WHERE hometeam = t.id
    ORDER BY datetime DESC
    LIMIT 5)
LEFT JOIN fixtures f_a ON f_a.awayteam = t.id AND f_a.id IN (
    SELECT id 
    FROM fixtures
    WHERE awayteam = t.id
    ORDER BY datetime DESC
    LIMIT 5)
GROUP BY t.name

Подвыбор необходим для получения только последних 5 приборов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...