SQL在单个查询中从两个不同的ID检索信息

SQL在单个查询中从两个不同的ID检索信息,sql,Sql,假设我有一个代表足球比赛的表(本例中为X_训练),其中有客场队id和主场队id,这些id指向另一个表“团队属性” 我通过查询只选择了一个团队的属性,但我对获取两个团队的属性都感兴趣 这是我现在使用的查询: SELECT X_Train.* , Team_Attributes.*, MAX(Team_Attributes.date) FROM X_Train LEFT JOIN Team_Attributes ON X_Train.home_team_api_id =

假设我有一个代表足球比赛的表(本例中为X_训练),其中有客场队id和主场队id,这些id指向另一个表“团队属性”

我通过查询只选择了一个团队的属性,但我对获取两个团队的属性都感兴趣

这是我现在使用的查询:

SELECT 
    X_Train.* , Team_Attributes.*, MAX(Team_Attributes.date)
FROM 
    X_Train
LEFT JOIN 
    Team_Attributes ON X_Train.home_team_api_id = Team_Attributes.team_api_id 
                    AND Team_Attributes.date <= X_Train.date
GROUP BY 
    X_Train.id
ORDER BY 
    X_Train.date
选择
X_列。*,团队属性。*,最大值(团队属性.日期)
从…起
火车
左连接
X_列车上的团队属性。主页团队api_id=团队属性。团队api_id

和Team_Attributes.date您需要第二次加入。为此,为了简化查询,请使用表别名:

SELECT t.*, hta.*, ata.*

FROM X_Train t LEFT JOIN
     Team_Attributes hta
     ON t.home_team_api_id = hta.team_api_id  AND
        hta.date <= t.date LEFT JOIN
     Team_Attributes ata
     ON t.away_team_api_id = ata.team_api_id  AND
        ata.date <= t.date
ORDER BY t.date DESC;
选择t.*、hta.*、ata*
从X_列车左转
hta团队
在t.home\u team\u api\u id=hta.team\u api\u id上

hta.date您需要第二次加入。为此,为了简化查询,请使用表别名:

SELECT t.*, hta.*, ata.*

FROM X_Train t LEFT JOIN
     Team_Attributes hta
     ON t.home_team_api_id = hta.team_api_id  AND
        hta.date <= t.date LEFT JOIN
     Team_Attributes ata
     ON t.away_team_api_id = ata.team_api_id  AND
        ata.date <= t.date
ORDER BY t.date DESC;
选择t.*、hta.*、ata*
从X_列车左转
hta团队
在t.home\u team\u api\u id=hta.team\u api\u id上

hta.date Group by确保没有重复的行;)Group by确保没有重复的行;)