Ich habe eine MySQL-Anweisung, die MySQL-Variablen wie "@StepWidth" und Variablen, die in IF-Anweisungen verwendet werden.MySQL Query Ergebnisfelder mit SQL @ Variable sind null
Die Abfrage funktioniert gut in MySQL Workbench, aber bei Verwendung mit PHP und mysqli_query ist das Feld mit den Variablen leer (null).
Idee ist, das Datum, das in der DB-Runde gespeichert ist, auf die nächste Minute, Stunde oder Tag abzurunden, abhängig von der durch das PHP-Skript festgelegten Schrittweite und gruppiere das Ergebnis nach dem unix_timestamp wird damit berechnet, um später in einem Diagramm ein kleines Ergebnis zur Verwendung zu erhalten.
Der Query
SELECT
@stepWidth:=900 as StepWidth,
task_template.puid,
task_template.ptemlate_name AS series_name,
round(avg(job.JOB_DURATION)) as value,
job.pcreation_date,
case
WHEN @stepWidth < 3600 THEN @RoundedCreationDate:=from_unixtime(UNIX_TIMESTAMP(job.pcreation_date) - MOD(UNIX_TIMESTAMP(job.pcreation_date), @stepWidth), "%Y-%m-%d %H:%i:%s")
WHEN @stepWidth >= 3600 AND @stepWidth < 86400 THEN @RoundedCreationDate:=DATE_ADD(DATE_FORMAT(job.pcreation_date, "%Y-%m-%d %H:00:00"), INTERVAL IF(MINUTE(job.pcreation_date) < 30, 0, 1) HOUR
)
WHEN @stepWidth >= 86400 then @RoundedCreationDate:=DATE_FORMAT(DATE_ADD(DATE_FORMAT(job.pcreation_date, "%Y-%m-%d %H:00:00"), INTERVAL IF(HOUR(job.pcreation_date) < 12, 0, 1) DAY),"%Y-%m-%d 00:00:00")
END AS RoundedCreationDate,
round(UNIX_TIMESTAMP(@RoundedCreationDate)) as start
FROM (select @start := 0, @RoundedCreationDate := "1990-01-01") as Sqlvars, job
INNER JOIN task_template ON task_template.puid = job.rprocess_templateu
WHERE job.pcreation_date BETWEEN "2013-10-02 00:00:00" AND "2013-10-02 23:59:59"
GROUP BY task_template.puid,
task_template.ptemlate_name,"start"
ORDER BY task_template.ptemlate_name, "start";
Ich habe auch das Ergebnis in eine temporäre Tabelle zu schreiben versucht, aber das bringt das gleiche Ergebnis. Ich hoffe, dass mir jemand helfen kann. Vielen Dank.
Das Verhalten von Sitzungsvariablen bei Verwendung mit Aggregatfunktionen ist nicht vorhersagbar. Alternativ können Sie zuerst die Ergebnisse mithilfe von Sitzungsvariablen vorbereiten und anschließend Aggregate auf diese Ergebnisse anwenden. Auch [*** lies eine meiner Fragen zu so ***] (http://stackoverflow.com/questions/22388419/). –
Ist es möglich, dass es in Workbench funktioniert, nur weil Sie die gleiche Verbindung wiederverwenden und Ihre Variablen bereits einen Wert aus früheren Versuchen haben? –