1

チーム名と年を受け取り、その特定の年のその特定のチームのプレーヤー数を返すストアド プロシージャを作成したいと考えています。私は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);

現時点では少し面倒なので、結合などを使用してこれを単純化する方法はありますか。

4

1 に答える 1

2

あなたがこのようにしたいかどうかはわかりません:

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);
于 2012-05-23T03:55:27.087 に答える