Как вызвать хранимую процедуру и изменить таблицу базы данных за 1 раз - PullRequest
0 голосов
/ 17 января 2012

Я действительно борюсь с этим уже некоторое время. У меня есть база данных MySQL и много данных. Это веб-сайт формулы 1, который я должен создать для колледжа.

В данный момент таблица j_tracks_rounds_results заполнена данными, но один столбец не заполнен. Это столбец ранга.

Я создал хранимую процедуру следующим образом:

DROP PROCEDURE `sp_rank`//
delimiter @@
PROCEDURE `sp_rank`(sid INT)
begin
set @i = 0;

SELECT `performance`, subround_id, @i:=@i+1 as rank
FROM `j_tracks_rounds_results` 
where subround_id = sid
order by `subround_id`,`performance`;

end
delimiter ;

Вывод выглядит следующим образом:

rec.ID PERFORMANCE     SUBROUND_ID RANK
87766 100,349114516829 1           1
93040 101,075635087628 1           2
88851 101,664302543497 1           3

Он получает результаты и оценивает их, сортируя по производительности, поэтому самая низкая производительность получает рейтинг1 и т. Д. *

То, чего я пытаюсь достичь, это вернуть ранг в таблицу. Как команда ALTER для столбца «ранг».

Как бы я смог достичь этого?

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Вы неправильно используете свои операторы SQL. Вы хотите команду UPDATE, а не ALTER. например.
UPDATE table SET rank=@i WHERE subround_id=@id

0 голосов
/ 17 января 2012

В основном не ... Создайте таблицу для хранения ключа (rec.id?) И ранга.Обрежьте его, чтобы избавиться от предыдущих результатов, затем используйте вставку в ... с вашим запросом, а затем присоединитесь к нему.

Вы действительно не хотите изменять таблицы в своем обычном режиме, гарантированно, что кто-то будетиспользуйте столбец, когда его там нет, а затем, когда вы посмотрите на ошибку, это будет ...

Люди просто не ищут структур таблиц, изменяющихся в течение времени жизни приложения, это просто ошибкаслучиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...