Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Занимаюсь анализом статистики футбольных матчей и встал вопрос поиска предыдущих/следующих матчей в чемпионате для текущей пары. Попытаюсь объяснить на скриншотах, что требуется:
http://joxi.ru/DrlQawpS4lNjgm
Есть пара команд, которую я нашел по запросу вида: "SELECT `id_auto`, `date`, `tour`, `team1`, `team2`, `score` FROM table WHERE `id_auto` = 374",
теперь требуется далее по строкам таблицы найти следующие пары для найденных команд и вывести эти строки. Так если у меня, например, по запросу выдало команды Арсенал и Астон Вилла, то следующие искомые строки будут содержать "Челси - Астон Вилла" и "Фулхем - Арсенал" (видно на скриншоте).
Важный момент: интересует реализация поиска через курсоры.
С запросами работаю в связке с php, то есть имеется возможность сохранять название найденных комманд в переменные $team1 и $team2 к примеру.
Отредактированно Roman1984 (20.07.2016 12:51:33)
Неактивен
следующие матчи для найденной пары:
Неактивен
vasya написал:
следующие матчи для найденной пары:
SELECT `id_auto`, `date`, `tour`, `team1`, `team2`, `score` FROM table WHERE tour = $tour + 1 and (team1 in ($team1,$team2) or team2 in ($team1,$team2));
аналогично предыдущие
зачем здесь курсоры?
Ваше решение, как частное решение для поиска пред/след игры по календарю чемпионата меня вполне устраивает.
Однако, не всегда следующий матч - это тот матч, который идет следующим по туру. Например, в моем примере "Челси - Астон Вилла" следующий матч по времени(дате) - это матч 3го тура, а не следующего 2го тура (там произошел какой-то перенос матча).
Кроме этого, в дальнейшем предполагается объединение нескольких таблиц различных чемпионатов для поиска в них следующего соперника. Так, например, для Арсенала (или другой команды) следующей игрой может быть просто товарищеский матч, матч в кубке страны или европейском чемпионате из которых надо будет вывести для него соперника. Поэтому исходя из своего скромного опыта, считаю, что тут лучше всего оперировать курсорами.
Отредактированно Roman1984 (20.07.2016 14:03:48)
Неактивен
тогда следующие матчи это
Неактивен
vasya написал:
тогда следующие матчи это
SELECT `id_auto`, `date`, `tour`, `team1`, `team2`, `score` FROM table WHERE `date`>$date and team1 in ($team1,$team2) order by `date` desc limit 1;
SELECT `id_auto`, `date`, `tour`, `team1`, `team2`, `score` FROM table WHERE `date`>$date and team2 in ($team1,$team2) order by `date` desc limit 1;
В данном случае возможно неточное отображение результатов, так выполнение этих запросов выведет:
строку c id=370 и строку с id=363 из http://joxi.ru/DrlQawpS4lNjgm , то есть:
Астон Вилла - Ливерпуль
Челси - Астон Вилла
Так Астон Вилла встречается ещё раз, а нужно было вывести пару для Арсенала.
Однако я решил проблему таким образом:
Отредактированно Roman1984 (20.07.2016 16:54:47)
Неактивен