Autor | Zpráva | ||
---|---|---|---|
Prochy Profil |
#1 · Zasláno: 30. 9. 2012, 22:18:42
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 |
#2 · Zasláno: 1. 10. 2012, 10:41:12
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 |
#3 · Zasláno: 1. 10. 2012, 11:53:23
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ěď.
|
||
Časová prodleva: 12 let
|
0