sql - 三重加入sqlite

标签 sql sqlite join

我有一个非常简单的sqlite篮球运动员/辅助模型:


ID,名称和team_id的玩家表
ID,player_id和to_id的辅助表
其中player_id是指辅助球员,并且to_id字段表示辅助的接收者。


现在,我在使用裸露的SQL方面表现很差。我能够通过以下方式检索所有帮助

SELECT players.name, teams.name, assists.to_id
FROM players
JOIN teams 
on players.team_id = teams.id
JOIN assists
on assists.player_id = players.id


并给出了辅助球员的名字,球队的名字和接受者的身份证(例如:科比·布莱恩特,洛杉矶湖人,342)。要添加收件人姓名而不是裸名,我需要添加什么?它来自相同的玩家表。

最佳答案

应该这样做:

SELECT p.name, t.name, a.to_id, p2.name
FROM players p
JOIN teams t on p.team_id = t.id
JOIN assists a on a.player_id = p.id
LEFT JOIN players p2 on a.to_id = p2.id

关于sql - 三重加入sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43049149/

相关文章:

django - 在 10 个并发 uwsgi worker 上锁定 Django DB - 怎么做?

MySQL为每个分组的列值选择一个随机行

mysql - LEFT JOIN 四个表产生不需要的结果

php - 将 "Integrity constraint violation: 1048 Column cannot be null "设为警告消息

sql - oracle sql left join 和 count, sum, group by

sqlite - QSqlTableModel Submitall,但数据库未更新

dll - sqlite3 扩展函数 : The specified module could not be found

sql-server - 将一个表的一列与另一个表的数据匹配

sql - 我的香蕉在哪里? (SQL查询NULL问题)

sql - 在 SQL 表上获取未使用的唯一值