2012-01-16 8 views
0

私は今これでかなり苦労しています。 私はMySQLデータベースとたくさんのデータを持っています。それは私が大学のために作成しなければならないformula1のウェブサイトです。ストアドプロシージャを呼び出して1でデータベーステーブルを変更する方法

今のところ、j_tracks_rounds_resultsテーブルはデータで埋められていますが、1つのカラムは記入されていません。ランクの列です。

次のように私は、ストアドプロシージャを作成:

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

SELECT `performance`, subround_id, @i:[email protected]+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コマンドと同様です。

私はこれをどのように達成できますか?

答えて

0

基本的には... キー(rec.id?)とランクを保持するテーブルを作成します。それを切り捨てて前の結果を取り除き、次にあなたのクエリーで...を挿入してからそれに参加してください。

あなたは本当に

...それがない場合いくつかのいずれかが列を使用すると、あなたが障害を見たとき、それがされる保証、あなたの通常走行中のテーブルを変更したくありません

人々は、アプリケーションの寿命を通じて変化するテーブル構造を探していません。

+0

新しい 'ranking'テーブルの作成は、新しい行が' j_tracks_rounds_results'に挿入されたときに起動するトリガーで実行できます。 – ninesided

関連する問題