please try this sqlFiddle
SELECT T1.id_team as team1ID,T1.name_team as team1Name,
T2.id_team as team2ID,T2.name_team as team2Name,
CONCAT(T1.id_team,' vs ',T2.id_team) as id_vs,
CONCAT(T1.name_team,' vs ',T2.name_team) as name_vs
FROM team T1,team T2
WHERE T1.id_team < T2.id_team
ORDER BY rand()
You will get a 5 choose 2 (10) rows
Each team will get a chance to play the other 4 teams.
if you wanted to have games where the first team represents a home game you can randomize that too using this sqlFiddle all I am doing is picking a random number and based on that random number mix up team1, team2
SELECT @rand := rand() as randValue,
IF (@rand > 0.5,T1.id_team,T2.id_team) as team1ID,
IF (@rand > 0.5,T1.name_team,T2.name_team) as team1Name,
IF (@rand > 0.5,T2.id_team,T1.id_team) as team2ID,
IF (@rand > 0.5,T2.name_team,T1.name_team) as team2Name,
IF (@rand > 0.5,CONCAT(T1.id_team,' vs ',T2.id_team),
CONCAT(T2.id_team,' vs ',T1.id_team)) as id_vs,
IF (@rand > 0.5,CONCAT(T1.name_team,' vs ',T2.name_team),
CONCAT(T2.name_team,' vs ',T1.name_team)) as name_vs
FROM team T1,team T2
WHERE T1.id_team < T2.id_team
ORDER BY rand()
if you wanted each team to have some games away, and some games at home (having the team one representing a home game) in an even fashion, like each team in this case will have 2 home games and 2 away games. you can try this sqlFiddle
SELECT @row := @row+1 as randValue,
IF (MOD(@row,2)=0,T1.id_team,T2.id_team) as team1ID,
IF (MOD(@row,2)=0,T1.name_team,T2.name_team) as team1Name,
IF (MOD(@row,2)=0,T2.id_team,T1.id_team) as team2ID,
IF (MOD(@row,2)=0,T2.name_team,T1.name_team) as team2Name,
IF (MOD(@row,2)=0,CONCAT(T1.id_team,' vs ',T2.id_team),
CONCAT(T2.id_team,' vs ',T1.id_team)) as id_vs,
IF (MOD(@row,2)=0,CONCAT(T1.name_team,' vs ',T2.name_team),
CONCAT(T2.name_team,' vs ',T1.name_team)) as name_vs
FROM team T1,team T2,(SELECT @row:=0)variable
WHERE T1.id_team < T2.id_team
ORDER BY rand()
$team1 vs $team2; $team3 vs $team4; $team5 vs $team1and them I would random which one would be $team1, which one would be $team2 and etc.