如何检查1名球员是否已经打过另一名球员

时间:2015-05-16 20:40:15

标签: php mysql

我在表上执行选择时遇到问题,但使用另一个表的结果来过滤可能性。

我有一个玩家结果表(玩家ID,胜利,亏损,平局,积分),并且比赛的回合在另一个表中(圆形id,锦标赛ID,玩家1 id,玩家2 id和表id)

我一直试图获得一个选择声明来检查tournamentround表并阻止玩家玩前面的对手(比如瑞士锦标赛),但我遇到了这样一个事实,那就是它选择的第二个玩家可能会被选中为另一个球员。

即p1播放p2和p3,但不播放p4或p5,当选择发生时,它将p1分配给p4,但是当它到达p4时,它将p4分配给p2。

关于如何防止这种情况的任何想法?

示例选择:

SELECT * FROM playerresults WHERE ((SELECT pid FROM playerresults) != (SELECT p1id FROM tournamentrounds))

任何建议都将不胜感激

1 个答案:

答案 0 :(得分:0)

如果你有一个给定的玩家,比如@playerid,那么你可以通过做类似的事情来获得没玩过的玩家:

select pr.*
from playerresults pr
where pr.pid not in (select t.pid2 from tournaments t where pid1 = @playerid) and
      pr.pid not in (select t.pid1 from tournaments t where pid2 = @playerid)

如果你想要一个随机数据并且你的数据不是很大(少于几千行),只需添加:

order by rand()
limit 1

查询。