-2

だから、私はページを持っていますallocate.php?id=XXXXX。基本的に、id 値に基づいてデータベース内のさまざまなテーブルからデータを取得し、それに応じて表示します。また、ユーザーは関連データを編集して操作することもできます。

現在、id 値が関連付けられているメイン テーブルには、テーブルをトラバースする必要がある順序を決定する「priority」フィールドもあります。質問は:

  1. 「allocate.php?id=10000」ページにいるとします。「優先度」の値は 1 です。

  2. 次のページには、'priority' 値 2 の詳細が表示されます。ID が '20001' のコースに割り当てられています。基本的には、次は「allocate.php?id=20001」に移動したいと考えています。

  3. では、各割り当てページに、割り当てられた次に優先度の高い ID 値にリンクする動的リンクを提供するにはどうすればよいでしょうか?

さらに情報が必要な場合は、正確な表を次に示します。

CREATE TABLE IF NOT EXISTS `course` (
  `id` varchar(11) NOT NULL,
  `name` varchar(30) NOT NULL,
  `priority` int(2) NOT NULL,
  PRIMARY KEY (`id`)
)

値は次のとおりです。

TUSCE100101
Course 101
1

TUSCE100102
Course 102
2

TUSCE100201
Course 201
2

NTUSCE100202
Course 202
3

TUSCE200301
Course 301
1

TUSCE200302
Course 302
4

ありがとう!

編集:おそらく質問が単純すぎるか、十分に調査していないと考えて質問を軽視した人にとって、私の問題は、現在のページを数えずに、優先度がより大きいか等しいかを確認し、結果を並べ替えると、次のようになる可能性があることです同じ優先度レベルのコースを切り替える状況になります。例えば:

  1. コース 101、102、103 は同じ優先度です。

  2. 私は 101 にいます。次に検索するクエリは、ランダムな順序で 102 と 103 を返します。最初の値、たとえば 102 を選びます。

  3. 102 の場合、同じ検索選択クエリで 101 と 103 が返され、最初の行は 101 になる可能性があります。

編集2

それで、私は最終的にそれを解決しました。ここは今後の参考に。

特定の行が訪問されたかどうかを示すために、「訪問」と呼ばれる追加の列を定義しました。訪問していないときのデフォルト値は 0 です。

すべての行を訪問した後、訪問値を 1 としてマークし、「SELECT id FROM course WHERE priority >= $currentPriority AND id!=$currentId AND visit=0」のようなクエリに基づいて次の値を選択しました。

最後の行で、上記の選択クエリが何も返さない場合、すべての「訪問」を再び 0 に設定し、「優先度」に基づいて順序付けされたクエリに基づいて最初の行を選択しました。これにより、テーブルを無限にループすることができました。

PS いつもお世話になっております。正直なところ、コミュニティからの奇妙な反応に少しがっかりしましたが、私の質問があまり明確でなかったのは私に責任があると思います. 私のソリューションに関するフィードバックをいただければ幸いです。

4

1 に答える 1

-1
SELECT * FROM course WHERE id!=$currentID AND priority>=$currentPriority ORDER BY priority ASC

この SQL クエリは、次の項目を提供します。

于 2012-08-30T08:24:44.927 に答える