我正在编写一个应用程序来保持飞镖得分。我创建了如下的关系数据库:SQL如何从关系数据库中的游戏获取玩家VS玩家游戏数量
GameInformation gameId | numberOfPlayer | totalInnings | gameType
0 | 2 | 13 | 0
1 | 2 | 14 | 0
2 | 2 | 20 | 0
3 | 3 | 16 | 0
PlayersByGame gameId | playerId |局| | mpr
0 | 0 | 13 | 1.538
0 | 1 | 13 | 1.651
1 | 0 | 14 | 1.500
1 | 1 | 14 | 2.012
2 | 0 | 20 | 1.658
2 | 2 | 20 | 2.123
3 | 2 | 16 | 2.001
3 | 1 | 16 | 1.325
3 | 0 | 16 | 1.001
玩家
姓名| Id
Dainon | 0
Andy | 1
Keith | 2
我熟悉简单的SQL查询,但并不确定如何获取玩家(Dainon)在没有超过2名玩家的游戏时与玩家(安迪)只有戴安和安迪互相对抗。在查询时,我有Dainon和Andy的球员ID。
任何人都可以提供任何有关如何编写SELECT语句来做到这一点。
我已经开始与错误的查询,如下列:
SELECT * FROM PlayersByGame WHERE playerId LIKE 0 and playerId LIKE 1;
SELECT gameId, numberOfPlayers, totalInnings, gameType
FROM GameInformation
WHERE (numberOfPlayers = 2)
UNION
SELECT gameId, playerId, innings, mpr
FROM PlayersByGame
WHERE (playerId = 0)
UNION
SELECT gameId, playerId, innings, mpr
FROM PlayersByGame AS PlayersByGame_1
WHERE (playerId = 1)
谢谢你,我很欣赏你的任何援助!
Nico,这很好用!精确测试的SQL SELECT语句如下: SELECT COUNT(gi。游戏ID)AS表达式1 FROM GameInformation AS GI INNER JOIN PlayersByGame AS PBG1 ON pbg1.gameId = gi.gameId AND pbg1.playerId = 0 INNER JOIN PlayersByGame AS PBG2 ON pbg2.gameId = gi.gameId AND pbg2.playerId = 1 WHERE(gi.numberOfPlayers = 2) – Dainon
我很高兴它的工作,不要犹豫,upvote我的回答:) – nico