0

私はこのコードを書きませんでした。Racetracker(http://sourceforge.net/projects/racetracker/)からのものですが、いくつかの変更を加えようとしています。

簡単なチームの順位リストを作成しようとしているので、5チームに制限します。チームの順位ページには「ORDERBY SUM(driverpoints)」が含まれていますが、何も実行されません(このページでは、Javascriptを使用してHTMLテーブルを手動で並べ替えています)。さらに、LIMIT 5を追加しようとすると、同様に何も実行されず、すべての異なるチームが出力されるだけです。関連するコードは次のとおりです(OR ='$ thenames [1]'修飾子が43個あるため、ここで多くの反復ORを削除しましたdrivername。これらは、ORDER BYおよびLIMIT部分が機能するかどうかには影響しません):

$total= mysql_query("SELECT SUM(driverpoints), SUM(events), SUM(firstplace),
        SUM(qual1stplace), SUM(lapsseason), SUM(lapsledseason), SUM(top5season),
        SUM(top10season), SUM(provisionals) 
    FROM `$whatseriestable` 
    WHERE `year` = $siteyear AND `drivername` = '$thenames[0]' 
        OR `drivername` = '$thenames[1]' 
    ORDER BY `SUM(driverpoints)` DESC LIMIT 5");

また、不可解なのは、ドライバーの順位の概要でORDERBYとLIMITが正常に機能することです。

$stn= mysql_query("SELECT * FROM `$whatseriestable` 
    WHERE `year` = $siteyear 
    ORDER BY `driverpoints` DESC LIMIT 10");

なぜこれはチームの順位で機能しないのですか?

4

1 に答える 1

2

それはおそらくあなたのWHERE句だけです... ANDはthe程度よりも優先されます

WHERE 
       `year` = $siteyear 
   AND `drivername` = '$thenames[0]' 
    OR `drivername` = '$thenames[1]' 

と解釈されている

WHERE 
     ( year condition and first driver condition ) 
  OR ( second driver )

私はあなたが何を意味すると思います

WHERE 
     ( year condition )
 and ( first driver condition OR second driver )

ドライバー条件を ( ) 括弧で囲みます。

于 2012-11-29T19:27:46.723 に答える