Wie kann ich diese Abfrage in Doctrine DBAL Abfrage oder besser in createQuery() Struktur schreiben? Bei der Verwendung von createQuery() wurde "data_last" nicht als Datum, sondern als String und generierte Fehler erkannt. Vielleicht wäre eine bessere Lösung die interne Linksverbindung und die Berechnung auf Symfony-Seite? Die ROUND-Funktion wird von Doctrine nicht erkannt.Konvertieren von SQL nach Doctrine DBAL oder createQuery()
$sql='SELECT
q.fund_id AS tfi,
f.fundName AS name,
(SELECT `date`
FROM quotes
WHERE DATE_SUB("'. $sToday .'", INTERVAL 1 MONTH) <= `date` AND `fund_id` = `tfi`
ORDER BY `date` DESC
LIMIT 1) AS date_last,
(SELECT `value`
FROM quotes
WHERE `fund_id` = `tfi` AND `date` = `date_last`
LIMIT 1) AS value_last,
(SELECT `date`
FROM quotes
WHERE DATE_SUB(date_last, INTERVAL 1 MONTH) <= `date` AND `fund_id` = `tfi`
ORDER BY `date` ASC
LIMIT 1) AS date_1m,
(SELECT `value`
FROM quotes
WHERE `fund_id` = `tfi` AND `date` = `date_1m`
LIMIT 1) AS value_1m,
(SELECT ROUND((value_last-value_1m)/value_1m*100, 2)) AS chg_1m
FROM quotes q
LEFT JOIN funds f
ON (q.fund_id = f.id)
GROUP BY q.fund_id
ORDER BY f.fundName';
Vielen Dank für Ihre Meinung, wie wäre es mit meinen Unterabfragen anstelle von Links Joins? Was wäre eine bessere Lösung? – nysander