1

長年の読者、初めてのポスターですので、ばかげた質問はご容赦ください...

私のデータベースには、ドラフトの順序(ピック番号、そのピックを行うために指名されたGM、ピックされたプレーヤー、ピックが行われた時間[12時間あります])を含むテーブルがあります(バスケットボールファンタジーキーパーリーグドラフトを作成しています)。ドラフトウィンドウ]およびピックがキーパーピックであるかどうか)したがって、私がやろうとしているのは、次のピックがキーパーピックであるかどうかを検出し、そうである場合は、さらにいくつかのクエリを実行するなどです。 GMが通常選択するキーパーピックが1つしかない場合でも、2つ以上のキーパーピックが連続している場合はどうなりますか?

したがって、ネストされたIFステートメントの束を実行する代わりに、テーブルから次のピックを選択してクエリを実行し、それがキーパーピックであるかどうかを3〜4回チェックします(以下を参照)。

$query1Counter = "SELECT counterID FROM draftCounter";
$query1Result=mysql_query($query1Counter);
$livePickCount=mysql_numrows($query1Result);

それから:

if ($livePickCount != "") {
    //Do stuff then:
    //run $query1Counter again, then:

    if ($livePickCount != "") {
        //Do stuff then:
        //run $query1Counter again

        if ($livePickCount != "") {
            //Do stuff then:
            //run $query1Counter again
        }
    }
}

私は次のようにテーブルからすべての結果を引き出すことができることを望んでいました:

query = SELECT * FROM keeperLeagueDraftOrder;
$result=mysql_query($query);

次のような特定の列の値を引き出します。

$keeperPick=mysql_result($result,$i,"keeperPick");

次に、キーパーピックの場合は1、通常のピックの場合は0のいずれかであるため、次のようなループを実行する可能性があります。

WHILE $keeperPick=1 {
    //Do all the stuff that would skip the row here
}

2つ以上のKeeper写真が連続している場合にループするように、そうでない場合は、最初の値に到達すると、keeperPick==0通常の業務になります。

私の問題は、私が適切なプログラマーではなく、グーグルとコピー/貼り付け、および必要に応じていくつかの調整を行うことによって、このようなものをいじくり回しているだけであり、本当に単純なループにしか使用されていないことです。

サンプルテーブル(最初のドラフトピックが作成され、4つのキーパーピックが指名された[ドラフト時間なし]):

draftPickID  draftPickPlayerID  draftPickGM  keeperPick  draftTime
1            72                 5            0           2012-09-10 22:04:24
2            10                 3            1           0000-00-10 00:00:00
3            32                 2            1           0000-00-10 00:00:00
4            0                  6            0           0000-00-10 00:00:00
5            0                  1            0           0000-00-10 00:00:00
6            5                  4            1           0000-00-10 00:00:00
7            44                 4            1           0000-00-10 00:00:00
8            0                  1            0           0000-00-10 00:00:00
9            0                  6            0           0000-00-10 00:00:00
10           0                  2            0           0000-00-10 00:00:00
4

1 に答える 1

1

keeperPick=0およびdraftPickPlayerID=0のデータベースから最小のdraftPickIDを取得しようとしている場合は、このデータベースクエリを使用しないのはなぜですか。

SELECT * FROM keeperLeagueDraftOrder
WHERE keeperPick = 0 AND draftPickPlayerID = 0
ORDER BY draftPickID ASC
LIMIT 1

これにより、ループなどの必要がなくなります。実際の選択が必要なドラフトの次のピックに移動するだけです。

mysqli_*また、関数の使用mysql_*は推奨されていないため、関数の使用を実際に検討する必要があります。

于 2012-09-10T16:03:38.107 に答える