mysql - 使用存储过程计算团队中的人数

标签 mysql sql join stored-procedures

我想创建一个存储过程,它接受球队名称和年份,并返回该特定球队在该特定年份的球员人数。我正在使用 MYSQL,下面列出了我正在使用的表:

Person     (personID, name, phone, email, year)
Player     (personID, dateOfBirth, school)
playerTeam (personID, teamID)
Team       (teamID, teamName, ageGroup)

到目前为止,我已经尝试加入表并仅在 teamName 和 Person.year = 输入参数的情况下计算 personID 但无济于事。有什么想法吗?

提交这个问题后,通过反复试验,我能够使用以下语句让它工作:

DELIMITER //

CREATE PROCEDURE teamSize (IN team VARCHAR (30), IN YEAR INT) 
BEGIN
          SELECT 
                    COUNT(Person.personID) NumOfPlayers 
          FROM
                    Person AS p,
                    Player,
                    playerTeam,
                    Team 
          WHERE Person.personID = Player.personID 
                    AND Player.personID = playerTeam.personID 
                    AND Team.teamID = playerTeam.teamID 
                    AND Team.teamName = team 
                    AND Person.year = YEAR ;
END //

DELIMITER ;

CALL teamSize('Pirates', 1991);

有没有办法使用连接等来简化这个,因为目前它有点困惑。

最佳答案

我不确定你是否想要这样:

DELIMITER //

CREATE PROCEDURE GetPlayerCount (
          IN oTeamName VARCHAR (50),
          IN oYear INT
) AS 
BEGIN
          SELECT 
                    COUNT(a.PersonID) NoOfPlayers 
          FROM
                    Person a 
                    INNER JOIN PlayerTeam b 
                              ON a.PersonID = b.PersonID 
                    INNER JOIN Team c 
                              ON b.TeamID = c.TeamID 
          WHERE b.TeamName = oTeamName 
                    AND a.Year = oYear ;
END //

DELIMITER ;

但我认为这是你想要的。

用法:

CALL GetPlayerCount('TeamDog', 2012);

关于mysql - 使用存储过程计算团队中的人数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10713140/

相关文章:

php - 使用php和mysql记录curl GET请求的结果

php - 如何使用php从wordpress中的数组列表中获取单个值

mysql - 在 MySQL 中, "Overhead"是什么意思,它有什么不好的,以及如何修复它?

mysql - 如何使用随机事件名称从存储过程创建事件?

sql - 如何使用具有两列的 Hive sql 滞后函数?

c# - 如何根据作为 varchar 传递的 ids 列表获得结果?

scala - 负逻辑实现不适用于spark/scala

c# - Entity Framework 在加载实体时删除级联

mysql - 连接值和可为 null 的值

mysql - 将复杂的 mysql SELECT 转换为 UPDATE