Я подготовил таблицу результатов для футбольной лиги под названием "игры". В этой таблице результатов показаны время и дата, идентификаторы домашней/гостевой команды и показатели дома/заездов.
Я пытаюсь создать запрос из этого, который отображает всю информацию из таблицы "игры", но показывает любые значения NULL как пустые, а не NULL. Я также пытаюсь заменить идентификаторы команд соответствующими именами команд. Имена команд хранятся в таблице под названием "команды" под столбцом "tname".
Вот что я установил;
CREATE TABLE teams(id int primary key auto_increment,tname char(32));
CREATE TABLE games(id int primary key auto_increment, date datetime,
hteam int, ateam int, hscore tinyint,ascore tinyint);
INSERT INTO teams VALUES
(1,'Team1'),(2,'Team2'),(3,'Team3'),(4,'Team4');
INSERT INTO games VALUES
(1,'2008-1-1 20:00:00',1,2,1,0),(2,'2008-1-1 20:00:00',3,4,0,2),
(3,'2008-1-8 20:00:00',1,3,1,1),(4,'2008-1-8 20:00:00',2,4,2,1);
SELECT * FROM games;
Чтобы изменить NULL
на пустую строку, вы можете использовать функцию COALESCE()
, которая возвращает первый непустой аргумент. Кроме того, вы можете использовать IFNULL()
для выполнения той же работы.
Чтобы вернуть имя команды, присоедините две таблицы на основе соответствующих идентификаторов. Вам нужно будет присоединиться к таблице команд дважды, один для дома, а другой для гостей.
Попробуй это:
SELECT id, 'date', ht.tname, at.tname, COALESCE(hscore, ''), COALESCE(ascore, '')
FROM games g
LEFT JOIN teams ht ON ht.id = g.hteam
LEFT JOIN teams at ON at.id = g.ateam