Próbuję zadeklarować zmienne i uruchomić zapytanie w ten sposób:
$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) ";
Problem polega na tym, że pokazuje wynik pierwszego SELECT, który jest zadeklarowanymi przeze mnie zmiennymi, a nie drugiego, który jest głównym zapytaniem.
Po raz pierwszy deklaruję zmienne i nie wiem, czy robię to dobrze.
Dziękujemy za komentarze i pomoc w tym temacie.
1
Fabian Sierra
31 październik 2018, 19:42
1 odpowiedź
Najlepsza odpowiedź
Nie musisz wykonywać przypisań zmiennych w oddzielnym SELECT
. Możesz to zrobić, łącząc się z głównym zapytaniem.
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
2
Barmar
31 październik 2018, 20:00
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.