php - 声明变量 MySQL

标签 php mysql variables phalcon

我正在尝试声明变量并像这样运行查询:

$sql = "SELECT @dateconsult := (YEARWEEK('2018-10-01',3)),
               @countunits  := ( SELECT COUNT(s.id_production)
                                 FROM sw_sowing
                                 WHERE status != 0
                                 AND YEARWEEK(date,3) <= @dateconsult
                                 GROUP BY id_production_unit_detail
                               ),
               @quadrants   := ( SELECT DISTINCT value
                                 FROM cf_config
                                 WHERE parameter = 'PLANTHEALTH'
                               );

       SELECT FORMAT(((count_quadrant * 100)/(total_units * Cuadrantes)),3) AS incidence
       FROM (
             SELECT @countunits AS total_units, @quadrants AS Cuadrantes,
             FROM ph_planthealth
             INNER JOIN ph_planthealth_detail ON ph_planthealth_detail.id_p = ph_planthealth.id
             WHERE YEARWEEK(ph_planthealth.date,3) = @dateconsult
             AND ph_planthealth.status = 200
             AND ph_planthealth.id_tenant = 1
             AND ph_planthealth_detail.id_plague != 0
             GROUP BY ph_planthealth_detail.id_plague
      ) AS s
      ORDER BY incidence DESC; ";

    $plague = $this->db->fetchAll($sql, Phalcon\Db::FETCH_ASSOC, $options) ";

问题是它显示了第一个 SELECT 的结果,这是我声明的变量,而不是作为主查询的第二个 SELECT 的结果。

这是我第一次声明变量,我不知道我这样做是否正确。

非常感谢您对此主题的评论和帮助。

最佳答案

您不需要在单独的 SELECT 中进行变量赋值。您可以通过加入主查询来完成它们。

SELECT FORMAT(((count_quadrant * 100)/(total_units * Cuadrantes)),3) AS incidence
FROM (
     SELECT @countunits AS total_units, @quadrants AS Cuadrantes,
     FROM ph_planthealth
     INNER JOIN ph_planthealth_detail ON ph_planthealth_detail.id_p = ph_planthealth.id
     WHERE YEARWEEK(ph_planthealth.date,3) = @dateconsult
     AND ph_planthealth.status = 200
     AND ph_planthealth.id_tenant = 1
     AND ph_planthealth_detail.id_plague != 0
     GROUP BY ph_planthealth_detail.id_plague
) AS s
CROSS JOIN (
    SELECT @dateconsult := (YEARWEEK('2018-10-01',3)),
           @countunits  := ( SELECT COUNT(s.id_production)
                             FROM sw_sowing
                             WHERE status != 0
                             AND YEARWEEK(date,3) <= @dateconsult
                             GROUP BY id_production_unit_detail
                           ),
           @quadrants   := ( SELECT DISTINCT value
                             FROM cf_config
                             WHERE parameter = 'PLANTHEALTH'
                           )
) AS vars
ORDER BY incidence DESC

关于php - 声明变量 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53088331/

相关文章:

PHPUnit - 如何在 PHPUnit_Framework_TestCase 中实例化我的 pdo 类?

javascript - 对变量的引用未定义

php - Ajax 不向 PHP 发送 javascript 变量

mysql - .NET - 通过连接到数据库导入类

jquery - Masonry 无法处理从 mysql 获取的图像

php - 类构造函数干扰另一个类

python - 为什么我的变量会在 python 的嵌套 for 循环中被覆盖?

php - 在 Windows 的 WAMP 上运行 CakePHP 2.x 时,如何修复 CAKE_CORE_INCLUDE_PATH 的错误?

php - imap 电子邮件解析的编码

laravel - 如何在 Laravel 5 中正确使用可终止中间件?