SELECT `user` , `score_all` , `rank` , `allytag` , `score_fight` , `firstlogin` ,
IF ( users . prem > 1139793613 ,
(IFNULL( SUM( aktien . count ) * 2 , 1 ) + users . score_all + ( users . score_sci * 100 ) + ( users . score_fight / 1000 ) + ( users . score_fleet / 1000 ) ) * 1.2 ,
IFNULL( SUM( aktien . count ) * 2 , 1 ) + users . score_all + ( users . score_sci * 100 ) + ( users . score_fight / 1000 ) + ( users . score_fleet / 1000 ) ) AS accw
FROM users
LEFT JOIN aktien ON aktien . userid = users . id
WHERE `lastlogin` > 0 AND `allyid` != '-1' AND users . rank = 0 AND users . allyid >= 0 GROUP BY users . id ORDER BY `accw` DESC
habe ich 2 mal den "IFNULL( SUM( aktien . count ) * 2 , 1 ) + users . score_all + ( users . score_sci * 100 ) + ( users . score_fight / 1000 ) + ( users . score_fleet / 1000 ) " Teil drinne da ich es mit einer IF Anweisung verzweige. Aber muß das wirklich sein oder gibt es da eine einfachere Lösung? Ein "AS bla" und dann in der IF Anweisung mit "bla" arbeitn geht leider nicht da der Wert von AS ja noch unbekannt ist.
Oder gibt es evtl eine allgemeine Möglichkeit das zu verbessern. Es soll einfach ein Wert errechnet werden und den im falle eines gültigen Premiumaccounts mit 1.2 multiplizert werden.
Das "IFNULL" setze ich ein da es auch sein kann das es auf diesen Spieler keine Aktien gibt und mir sonst nur NULL ausgegeben wird.