Я хочу создать хранимую процедуру, которая принимает имя и год команды и возвращает количество игроков в этой конкретной команде за этот конкретный год. Я работаю с MYSQL и перечислены ниже таблицы, которые я использую:Подсчет людей в команде с хранимой процедурой
Person (personID, name, phone, email, year)
Player (personID, dateOfBirth, school)
playerTeam (personID, teamID)
Team (teamID, teamName, ageGroup)
До сих пор я пытался присоединиться к таблицам и couting в PersonId только там, где teamName и Person.year = входные параметры, но не дало никаких результатов. Есть идеи?
После подачи на этот вопрос, используя метод проб и ошибок, я был в состоянии получить эту работу, используя следующие операторы:
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);
есть в любом случае, чтобы упростить это с помощью объединений и т.д., как в момент его немного беспорядочный.
Я думаю, что вам не нужно, чтобы объединить его с 'Player', так как вам не нужно' dateOfBirth' и 'School' игроков. –
Использовать формат SQL Ansi-92 (например, мой ответ ниже), а не SQLAnsi-89. –
да, но мне нужен год в Лице, потому что, например, кто-то, кто может быть тренером, возможно, был игроком в команде в прошлом, и для проведения сравнений мне нужна таблица соединения, доступ к которой я могу получить только через Player – batsta13