SQL复杂的连接查询

时间:2016-01-19 17:12:07

标签: mysql sql

我有两个表:match(id.match, date, home, away)team(id. team, name)match homeawayteam id的外键。在我的查询中,我想要一个包含date match,name这两个团队的输出记录。

我试过了:

SELECT m.date, m.home, m.away, t.name 
FROM `match` m
JOIN team t ON m.home = t.id_team 
ORDER BY m.date

但这会输出两个记录而不是一个。是不是可以用sql做我想做的事情,或者我应该改变表格的设计?

2 个答案:

答案 0 :(得分:0)

我怀疑你的桌子之间有多对一的关系。

这可能会起作用,具体取决于表值:

 SELECT DISTINCT m.date, m.home, m.away, t.name 
 FROM   `match` m JOIN 
       team t ON m.home = t.id_team 
 ORDER BY m.date

答案 1 :(得分:0)

好的,我确实做得更深入了。研究并找出答案。早些时候我刚问错了问题。谢谢大家的贡献!

以下是解决方案:

SELECT m.date, m.home, m.away, t.name AS homename, te.name AS awayname
FROM `match` m 
JOIN team t ON m.home = t.id_team 
JOIN team te 
ON m.away = te.id_team ORDER BY m.date