Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION generateMatches(tournament INT, basegroups INT) RETURNS VOID AS $$
- DECLARE
- counter INTEGER := 0;
- level INTEGER := 0;
- identifier INTEGER := 1;
- groupid INTEGER := 0;
- teamrow RECORD;
- grouperow RECORD;
- groups_on_level INTEGER;
- BEGIN
- groups_on_level := basegroups;
- LOOP
- LOOP
- EXIT WHEN counter = groups_on_level;
- INSERT INTO "Groups" (id_tournament, name, level)
- VALUES (tournament, identifier, level);
- counter := counter + 1;
- identifier := identifier + 1;
- END LOOP;
- EXIT WHEN groups_on_level = 1;
- groups_on_level := groups_on_level / 2;
- counter := 0;
- level := level + 1;
- END LOOP;
- counter := 1;
- FOR teamrow IN
- SELECT * FROM "Teams" WHERE id_tournament = tournament
- LOOP
- IF (counter > basegroups) THEN
- counter := 1;
- END IF;
- groupid := (SELECT id FROM "Groups" WHERE name = counter AND id_tournament = tournament);
- INSERT INTO "GroupElements" (id_team, id_group, position)
- VALUES (teamrow.id, groupid, 0);
- counter := counter + 1;
- END LOOP;
- FOR grouperow IN
- SELECT x.id_team AS id_team1, y.id_team AS id_team2, g.id AS id_group
- FROM "GroupElements" x CROSS JOIN "GroupElements" y INNER JOIN "Groups" g ON x.id_group = g.id
- WHERE x.id_group = y.id_group AND x.id_team < y.id_team AND g.id_tournament = tournament
- LOOP
- INSERT INTO "Matches" (id_team1, id_team2, score1, score2, id_group)
- VALUES (grouperow.id_team1, grouperow.id_team2, 0, 0, grouperow.id_group);
- END LOOP;
- FOR grouperow IN
- SELECT * FROM "Groups" g WHERE g.id_tournament = tournament AND g.level != 0
- LOOP
- INSERT INTO "Matches" (score1, score2, id_group) VALUES (0, 0, grouperow.id);
- END LOOP;
- END;
- $$ LANGUAGE plpgsql;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement