Msql Select и group из db, где team_1 и team_2 одинаковы, но обратны в записи - PullRequest
1 голос
/ 19 сентября 2011

Мне нужно выбрать из базы данных team_1 и team_2 (футбольные матчи) и группировать по играм

 $query = mysql_query("SELECT * FROM fixtures 
                       GROUP BY team_1 
                       ORDER BY match_date 
                       LIMIT 0,10") or die(mysql_error());

Работает нормально, однако футбольные матчи будут вводиться через пользователей, поэтому кто-то может ввести, например

Англия v Уэльс, и кто-то может войти в Уэльс v Англия

Это, очевидно, одна и та же игра, как я могу сгруппировать матчи, если team_1 (Англия) v team_2 (Уэльс) совпадает с team_1 (Уэльс) v team_2 (Англия)

Ответы [ 2 ]

3 голосов
/ 19 сентября 2011
SELECT field1, field2, match_date, ......
       ,GREATEST(team_1,team_2) as team1
       ,LEAST(team_1,team_2) as team2
       ,field6, field7
FROM fixtures
GROUP BY team1
ORDER BY match_date
LIMIT 10 OFFSET 0;
0 голосов
/ 19 сентября 2011

Вероятно, вам следует проверить работоспособность ввода, чтобы убедиться, что игры еще нет в базе данных:

$my_team = mysql_real_escape_string(...);
$other_team = mysql_real_escape_string(...);
SELECT team_1, team_2, match_date 
FROM fixtures
WHERE match_date = $match_date 
  AND ((team_1 = '$my_team' AND team_2 = '$other_team' ) OR
       (team_1 = '$other_team' AND team_2 = '$my_team' ));

После этого, если этот запрос не совпадает, можно вставить запись. Как правило, вы вставляете его в команду, которая играет «дома» первой?

В любом случае, если вы захотите найти матч для команды 'foo' 19 сентября, вы сделаете это:

SELECT team_1, team_2, match_date FROM fixtures
WHERE match_date = '2011-09-19' AND
(team_1 = 'foo' OR team_2 = 'foo');`

Удачи.

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