Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在SQL中设置数据之间关系的限制_Mysql_Sql_Database - Fatal编程技术网

Mysql 如何在SQL中设置数据之间关系的限制

Mysql 如何在SQL中设置数据之间关系的限制,mysql,sql,database,Mysql,Sql,Database,所以,我有一个PlayerId、firstname、lastname等字段的Player表。。以及包含字段(例如,TeamId、teamname等)的Teams表。。我还有一个查找表,通过显示哪名球员在哪支球队,将两张表连接在一起。我的问题是,如果我想向用户显示未超过20人限制的球队,并且球队中仍有空间,我将如何做 将以下内容视为表格和列 player_table ------------ playerid firstname lastname . teams ----- teamid tea

所以,我有一个PlayerId、firstname、lastname等字段的Player表。。以及包含字段(例如,TeamId、teamname等)的Teams表。。我还有一个查找表,通过显示哪名球员在哪支球队,将两张表连接在一起。我的问题是,如果我想向用户显示未超过20人限制的球队,并且球队中仍有空间,我将如何做

将以下内容视为表格和列

player_table
------------
playerid
firstname
lastname

.
teams
-----
teamid
teamname

.
player_team_association
------------------------
teamid
playerid
.
您的查询应该如下所示

select t.teamname, count(pta.playerid) as PlayerLimit,
(20 - PlayerLimit) as AvailableSlots
from teams t,player_team_association  pta
where t.teamid = pta.teamid
group by pta.teamid having PlayerLimit <=20
选择t.teamname,count(pta.playerid)作为PlayerLimit,
(20-玩家限制)作为可用场地
来自t队,球员协会pta
其中t.teamid=pta.teamid

按pta.teamid分组,具有PlayerLimit,将以下内容视为表格和列

player_table
------------
playerid
firstname
lastname

.
teams
-----
teamid
teamname

.
player_team_association
------------------------
teamid
playerid
.
您的查询应该如下所示

select t.teamname, count(pta.playerid) as PlayerLimit,
(20 - PlayerLimit) as AvailableSlots
from teams t,player_team_association  pta
where t.teamid = pta.teamid
group by pta.teamid having PlayerLimit <=20
选择t.teamname,count(pta.playerid)作为PlayerLimit,
(20-玩家限制)作为可用场地
来自t队,球员协会pta
其中t.teamid=pta.teamid

按pta.teamid分组,球员限制显示球员数量不超过20人的球队:

SELECT t.teamname
FROM team t
LEFT JOIN player_team pt ON
  t.teamid = pt.teamid
GROUP BY t.teamname
HAVING COUNT(pt.playerid) <= 20 -- you probably mean < 20
选择t.teamname
来自t队
左键加入球员团队
t、 teamid=pt.teamid
按t.teamname分组

计数(玩家ID)显示玩家数量不超过20的团队:

SELECT t.teamname
FROM team t
LEFT JOIN player_team pt ON
  t.teamid = pt.teamid
GROUP BY t.teamname
HAVING COUNT(pt.playerid) <= 20 -- you probably mean < 20
选择t.teamname
来自t队
左键加入球员团队
t、 teamid=pt.teamid
按t.teamname分组

拥有COUNT(pt.playerid)您可以使用COUNT()计算与团队相关的玩家的数量,并使用减号20筛选结果。。是的,在@scaisEdge建议的行中。尝试引用:连接表,SQL中的count()函数。哦,当然是count()。我甚至没有想到XD,非常感谢@scaisEdge您可以使用count()计算与团队相关的玩家数量,并使用减号20筛选结果。。是的,在@scaisEdge建议的行中。尝试引用:连接表,SQL中的count()函数。哦,当然是count()。我甚至没有想到XD,非常感谢@SCAISEDGE您需要按照完全没有球员的团队使用
左入
。。。错过了这个场景@StormoPM请使用查询的左侧外部加入版本编辑注释:)您需要按照完全没有玩家的团队使用
左侧加入
。是的。。。错过了这个场景@StormoPM请使用查询的左侧外部联接版本编辑注释:)