2017-04-17 13 views
0

私はアイテムの上位7リストを持つと考えています。 新しい上位アイテムが追加されるか、または下位ランクから昇格されるため、下位アイテムを1ステップ下に押し込むため、リンクされたリストが頭に浮かびます。私はそれが必要な方法です。 私はちょうどランクに従ってオブジェクトのトップ7(選ばれた数)にアクセスする必要があります。 データベースにどのように保存する必要がありますか?それともファイルストレージに保存する必要がありますか?私はちょうどいくつかの項目を追加するか、すでにランク付けされた項目のカット/ペースト型コードを書くことができますが、残念ながらそれは私のdb(MYSQL)の仕組みではありません。だから、どんな提案?ウェブサイトのリンクリストタイプのデータはどのように保存する必要がありますか?

+0

データベースにデータを格納し、スコアまたはランクの列またはスコアリング基準が何であれ列を持たないのはなぜですか?次に、トップ7が必要な場合は、単にビューを作成することができます。 2回目にデータを保存する必要はありません。なぜここにリンクリストが必要なのかわからないのは、特定の順序で7行の結果セットだけです。 –

答えて

0

「新しい番号3」を追加するUIについて考えてみましょう。これは3つ以上のすべてを1つずつバンプすることを意味します。

だから...あなたはランクである列を持っています。 SQLは

UPDATE MyList SET rank = rank + 1 WHERE rank >= 3; 
INSERT INTO MyList (rank, ...) 
    VALUES (3, ...); 

トップ7を取得している:

SELECT * FROM MyList WHERE rank <= 7 ORDER BY rank; 

を "移動" 5をランク付けするために、現在のランク12のアイテムをするために、多くのアプローチがあります。

UPDATE MyList SET rank = -1 WHERE rank = 12; 
UPDATE MyList SET rank = rank + 1 WHERE rank BETWEEN 5 AND 12; 
UPDATE MyList SET rank = 5 WHERE rank = -1; 
関連する問題