MySQL запрос, который меняет идентификатор команды на имя команды и делает не пустым

0

Я подготовил таблицу результатов для футбольной лиги под названием "игры". В этой таблице результатов показаны время и дата, идентификаторы домашней/гостевой команды и показатели дома/заездов.

Я пытаюсь создать запрос из этого, который отображает всю информацию из таблицы "игры", но показывает любые значения 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);

Этот запрос показывает структуру того, как я хочу, чтобы таблица результатов выглядела, однако я хочу изменить NULL на пустые и командные идентификаторы, например Team1 = 1, на имена реальных команд

SELECT * FROM games;
Теги:
database
null

1 ответ

2
Лучший ответ

Чтобы изменить 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
  • 0
    Вы пробовали последнее обновление моего ответа? Я забыл добавить команду гостей в предыдущих обновлениях. Попробуйте еще раз сейчас.
  • 0
    Работает полностью отлично! Спасибо вам большое!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню