Я работаю над небольшим проектом в связи с предстоящим чемпионатом мира. Я строю список / таблицу лидеров / scoredboard на основе групп с национальными командами. Идея состоит в том, чтобы получить информацию обо всех предстоящих матчах в группе или на этапе нокаута (оценки, время матча, статистика матчей и т. Д.). В настоящее время я застрял с БД в том смысле, что не могу найти запрос, который бы возвращал парные команды подряд. У меня есть эти 3 таблицы:
CREATE TABLE IF NOT EXISTS `wc_team` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NULL ,
`description` VARCHAR(250) NULL ,
`flag` VARCHAR(45) NULL ,
`image` VARCHAR(45) NULL ,
`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) ,
CREATE TABLE IF NOT EXISTS `wc_match` (
`id` INT NOT NULL AUTO_INCREMENT ,
`score` VARCHAR(6) NULL ,
`date` DATE NULL ,
`time` VARCHAR(45) NULL ,
`added` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) ,
CREATE TABLE IF NOT EXISTS `wc_team_has_match` (
`wc_team_id` INT NOT NULL ,
`wc_match_id` INT NOT NULL ,
PRIMARY KEY (`wc_team_id`, `wc_match_id`) ,
Я упростил таблицы, чтобы мы не пошли в неверном направлении. Теперь я пробовал все виды объединений и группировок, о которых мог только подумать, но, похоже, никогда не получал.
Пример запроса:
SELECT t.wc_team_id, t.wc_match_id, c.id.c.name, d.id, d.name
FROM wc_team_has_match AS t
LEFT JOIN wc_match AS s ON t.wc_match_id = s.id
LEFT JOIN wc_team AS c ON t.wc_team_id = c.id
LEFT JOIN wc_team AS d ON t.wc_team_id = d.id
Что возвращает:
wc_team_id wc_match_id id name id name
16 5 16 Brazil 16 Brazil
18 5 18 Argentina 18 Argentina
Но я действительно хочу:
wc_team_id wc_match_id id name id name
16 5 16 Brazil 18 Argentina
Имейте в виду, что в группе больше совпадений, я хочу видеть все эти совпадения, а не только одно.
Любой указатель или предложение были бы чрезвычайно признательны, так как я застрял как утка на этом:).