TecEye
New member
Hy Leute,
ich hab eine Liste mit Positionen, aus dem aktuellen und aus dem vorquartal. Gefiltert soll ZB nach "nur neue" heißt der vorquartalswert pre_value muss 0 sein. da dies ein berechnetes Feld ist kommt hier HAVING zum Einsatz, allerdings kommt nicht raus soll, entferne ich aber die WHERE Clause dann kommen die werte, allerdings auch die ungruppierten vorquartalswerte logischerweise, ich schätze also es hängt mit dem JOIN zusammen welches ich vorher eingebaut habe. Aber jetzt komm ich nicht mehr weiter...
Filter Script:
Query:
Bin für jeden Tipp dankbar
ich hab eine Liste mit Positionen, aus dem aktuellen und aus dem vorquartal. Gefiltert soll ZB nach "nur neue" heißt der vorquartalswert pre_value muss 0 sein. da dies ein berechnetes Feld ist kommt hier HAVING zum Einsatz, allerdings kommt nicht raus soll, entferne ich aber die WHERE Clause dann kommen die werte, allerdings auch die ungruppierten vorquartalswerte logischerweise, ich schätze also es hängt mit dem JOIN zusammen welches ich vorher eingebaut habe. Aber jetzt komm ich nicht mehr weiter...
Filter Script:
Code:
// FastFilter
$fastfilter = explode(",",$fastfilter);
$having_ff = [];
if($fastfilter[0] == 1){ $having_ff[] = "((f.form_y = '".$cur_year."' AND f.form_q = '".$cur_qtr."') OR (f.form_y = '".$pre_year."' AND f.form_q = '".$pre_qtr."'))";}
if($fastfilter[1] == 1){ $having_ff[] = "(f.form_y = '".$cur_year."' AND f.form_q = '".$cur_qtr."' AND pre_value = 0)";}
if($fastfilter[2] == 1){ $having_ff[] = "(f.form_y = '".$pre_year."' AND f.form_q = '".$pre_qtr."')";}
if($fastfilter[3] == 1){ $having_ff[] = "(value_mod > pre_value AND pre_value > 0)";}
if($fastfilter[4] == 1){ $having_ff[] = "(((f.form_y = '".$cur_year."' AND f.form_q = '".$cur_qtr."') OR (f.form_y = '".$pre_year."' AND f.form_q = '".$pre_qtr."')) AND f.value_mod < pre_value)";}
if($fastfilter[5] == 1){ $having_ff[] = "((f.form_y = '".$cur_year."' AND f.form_q = '".$cur_qtr."') AND sshPrnamt_mod = pre_sshPrnamt)";}
$having_ff = implode(" OR ", $having_ff);
Query:
Code:
SELECT f.*,
IF(f.form_y = '".$pre_year."' AND f.form_q = '".$pre_qtr."', 0 , f.value) AS value_mod,
IF(f.form_y = '".$pre_year."' AND f.form_q = '".$pre_qtr."', 0 , f.sshPrnamt) AS sshPrnamt_mod,
IF(f.form_y = '".$pre_year."' AND f.form_q = '".$pre_qtr."', 0 , ((100 / ".$sum_value.") * f.value)) AS weight,
@pre_sshPrnamt := (SELECT ED0.sshPrnamt FROM sys_filings ED0 WHERE ED0.form_y = '".$pre_year."' AND ED0.form_q = '".$pre_qtr."' AND ED0.connector='".$code."' AND ED0.cusip = f.cusip),
@pre_sshPrnamt := IFNULL(@pre_sshPrnamt, 0) AS pre_sshPrnamt,
@pre_value := (SELECT ED1.value FROM sys_filings ED1 WHERE ED1.form_y = '".$pre_year."' AND ED1.form_q = '".$pre_qtr."' AND ED1.connector='".$code."' AND ED1.cusip = f.cusip),
@pre_value := IFNULL(@pre_value, 0) AS `pre_value`,
IF(@pre_value = f.value OR @pre_value = 0,
IF(@pre_value = 0, 100, 0),
IF(@pre_value< f.value,
(100 - ((100 / f.value) * @pre_value)),
0 - (100 - ((100 / @pre_value) * f.value))
)
) AS changes
FROM sys_filings f
LEFT JOIN sys_filings f2
ON (f.cusip = f2.cusip AND f.connector = f2.connector AND CONCAT(f.form_y,f.form_y) < CONCAT(f2.form_y,f2.form_y))
WHERE f2.form_y IS NULL AND f.connector LIKE '".$code."' AND f.sshPrnamtType='SH'
HAVING ".$having_ff." ORDER BY ".$sort." ".$order." LIMIT ".$position.", ".$limiter
Bin für jeden Tipp dankbar