有没有更有效的方法在mysql中实现相同的东西(通过PHP)

时间:2011-12-09 14:10:40

标签: php mysql

我有以下代码,bar可能的错字应该选择3列,第1列是排名,反对和损失的百分比。

      SELECT COUNT(B.F_FACTOR) AS RANK, A.F_OPPOSITION, A.F_FACTOR
      FROM
          (
          SELECT
          F_OPPOSITION, 
          IF(SUM(F_RESULT='L',=1,1,0) AS F_NUM,
          IF(SUM(F_RESULT IN ('W','D','L'),=1,1,0) AS F_DENOM,
          ROUND(SUM(F_NUM/F_DENOM),2) AS F_FACTOR
          FROM $table
          GROUP BY F_OPPOSITION 
          ) A,
          (
           SELECT
           F_OPPOSITION, 
           IF(SUM(F_RESULT='L',=1,=1,=0) AS F_NUM,
           IF(SUM(F_RESULT IN ('W','D','L'),=1,=1,=0) AS F_DENOM,
           ROUND(SUM(F_NUM/F_DENOM),2) AS F_FACTOR
           FROM $table
           GROUP BY F_OPPOSITION 
           ) B
     WHERE A.F_FACTOR <= B.F_FACTOR 
           OR (A.F_FACTOR=B.F_FACTOR AND A.F_OPPOSITION=B.F_OPPOSITION)
     GROUP BY A.F_OPPOSITION, F_FACTOR
     ORDER BY A.F_RANK ASC, A.F_FACTOR DESC, A.F_OPPOSITION DESC;

有可能我将这个作为一个cron作业运行,每晚更新一个表,然后从该表做一个基本的选择x,y,z,用PHP显示这个,我可能会这样做。

但是从sql的角度来学习更多方面是他们在打字和处理方面更快/更容易实现相同的输出。

谢谢。

2 个答案:

答案 0 :(得分:1)

添加了cron job来更新每晚创建的表,处理时间可以忽略不计。

答案 1 :(得分:0)

在这个示例中,操作数据库中的结果(几乎)总是比从服务器端语言PHP实现相同。所以只需运行一个crontab。