Beheerder |
|
Wil je de structuur en wat voorbeeld data even geven zodat ik wat gerichter kan kijken welke velden je precies nodig bent. Verder raad ik je aan of veel meer met INNER JOIN te gaan werken zodat je meer rijen direct kan uitsluiten welke je toch niet hebt.
Weet niet of je een DB manager hebt maar voer deze query eens uit met EXPLAIN ervoor:
EXPLAIN select
ot.value, sum(ot.value) as dailyvalue,
count(distinct o.orders_id) as howmany_orders,
o.orders_id,
count(distinct op.orders_products_id) as howmany_tickets,
op.products_name,
op.products_model,
op.final_price as ticket_price,
op.final_price * count(distinct op.orders_products_id) as howmuch
from
orders_total ot, orders o, orders_products op
where
o.date_purchased like \"$date%\"
and
o.orders_id = op.orders_id
and
ot.orders_id = op.orders_id
and
ot.class='ot_total' group by op.products_name
EXPLAIN select ot.value, sum(ot.value) as dailyvalue, count(distinct o .orders_id ) as howmany_orders , o.orders_id, count(distinct op .orders_products_id ) as howmany_tickets , op.products_name, op.products_model, op.final_price as ticket_price, op .final_price * count(distinct op .orders_products_id ) as howmuch from orders_total ot, orders o, orders_products op where o.date_purchased like \"$date%\" and o.orders_id = op.orders_id and ot.orders_id = op.orders_id and ot.class='ot_total' group by op.products_name
Je krijgt dan een tabel met daarin een uitleg wat er gebeurt. Vermenigvuldig alle getallen welke onder de kolom rows staan met elkaar: Zoveel rijen heeft MySQL nodig om tot een resultaat te komen voor je query. Zorg dat iedere rij zoveel mogelijk bij 1 ligt door bijvoorbeeld indexes te plaatsen. |