Autor Zpráva
Prochy
Profil
Zdravim,

mám dotaz, kde využívám proměnnou pro počítání sumy postupné částky. Problém je v tom, že když to sortuju podle datumu, tak ta suma nejde, tak jak by měla. Počítám s tím, že nejdřív se provede dotaz a až potom se to vysortuje, proto to neodpovídá mému požadavku. Je možné to nějak vyřešit. Potřeboval bych to vyřešit v SQL, mimo nepřipadá v úvahu.

Dotaz:

SELECT 
 @suma:=@suma+IF(method_payment.id=5,0,-COALESCE(sold_products.price,0)+COALESCE((IF(list_purpose.id=4,0,payment.amount)),0)-COALESCE(visits.price,0)-COALESCE(COALESCE(general_sales.price,0)-COALESCE(general_sales.amount,0)))
as suma
FROM `clients` 
LEFT JOIN payment ON (payment.id_client=clients.id) 
LEFT JOIN list_purpose ON(list_purpose.id=payment.purpose_of_payment) 
LEFT JOIN visits ON(visits.client_id=clients.id AND payment.id_visit=visits.id) 
LEFT JOIN sold_products ON (payment.id_product=sold_products.id_prepaid_product) 
LEFT JOIN prepaid_products ON(prepaid_products.id=payment.id_product) 
LEFT JOIN vouchers ON(payment.id_voucher=vouchers.id) 
LEFT JOIN method_payment ON(method_payment.id=payment.id_method) 
LEFT JOIN list_therapy ON(list_therapy.id=visits.therapy) 
LEFT JOIN general_sales ON(general_sales.client_id=clients.id AND
payment.id=general_sales.payment_id) CROSS JOIN (
SELECT @suma:=0, @price:=0 
FROM DUAL) s 
WHERE clients.id=29
ORDER BY payment.date_payment

Vím, že to s těmi podmínkami není asi nejlíp vyřešený, ale holt sem nepřišel na lepší způsob.

Díky za rady
Kajman
Profil
U složitějších dotazů se na pořadí vyhodnocování uživatelských proměnných nejde spolehnout. Jistější bude dělat ten průběžný součet až v aplikaci při výpisu (např. v php).
Prochy
Profil
Bál sem se toho, že se to bude muset udělat až v php, ale snad to nějak vyřešim. Děkuji za odpověď.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: