我为一个名为"游戏"的足球联赛做了一个结果表。此结果表显示了时间和日期,家庭/客车团队ID和家庭/客场分数。
我正在尝试通过此查询创建一个查询,该查询显示"游戏"表中的所有信息,但显示为空白而不是空的任何零分数。我还试图用实际的相应团队名称替换团队ID。团队名称存储在名为" 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更改为空白和团队ID,例如Team1 = 1到实际的团队名称
SELECT * FROM games;
将NULL
更改为空字符串,您可以使用COALESCE()
函数,该函数返回第一个非NULL参数。另外,您可以使用IFNULL()
函数来完成相同的工作。
要返回团队的姓名,请根据相关ID加入两个表。您将需要两次加入团队桌,一个用于房屋,另一个用于客场。
尝试以下操作:
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