There has to be a better mousetrap for what I need :)



My current query looks like the following to pull all the class sums from the order totals table per day

SELECT LEFT(date_purchased,10),
(select SUM(zen_orders_total.value)
FROM
zen_orders_total
INNER JOIN zen_orders ON zen_orders.orders_id = zen_orders_total.orders_id
where zen_orders_total.class = "ot_subtotal" and left(date_purchased,10) = '2012-12-10'
GROUP BY LEFT(date_purchased,10)
order by date_purchased desc
limit 1) as ot_subtotal,

(select SUM(zen_orders_total.value)
FROM
zen_orders_total
INNER JOIN zen_orders ON zen_orders.orders_id = zen_orders_total.orders_id
where zen_orders_total.class = "ot_coupons" and left(date_purchased,10) = '2012-12-10'
GROUP BY LEFT(date_purchased,10)
order by date_purchased desc
limit 1) as ot_coupons,

(select SUM(zen_orders_total.value)
FROM
zen_orders_total
INNER JOIN zen_orders ON zen_orders.orders_id = zen_orders_total.orders_id
where zen_orders_total.class = "ot_shipping" and left(date_purchased,10) = '2012-12-10'
GROUP BY LEFT(date_purchased,10)
order by date_purchased desc
limit 1) as ot_shipping,

(select SUM(zen_orders_total.value)
FROM
zen_orders_total
INNER JOIN zen_orders ON zen_orders.orders_id = zen_orders_total.orders_id
where zen_orders_total.class = "ot_tax" and left(date_purchased,10) = '2012-12-10'
GROUP BY LEFT(date_purchased,10)
order by date_purchased desc
limit 1) as ot_tax,

(select SUM(zen_orders_total.value)
FROM
zen_orders_total
INNER JOIN zen_orders ON zen_orders.orders_id = zen_orders_total.orders_id
where zen_orders_total.class = "ot_gv" and left(date_purchased,10) = '2012-12-10'
GROUP BY LEFT(date_purchased,10)
order by date_purchased desc
limit 1) as ot_gv,


(select SUM(zen_orders_total.value)
FROM
zen_orders_total
INNER JOIN zen_orders ON zen_orders.orders_id = zen_orders_total.orders_id
where zen_orders_total.class = "ot_total" and left(date_purchased,10) = '2012-12-10'
GROUP BY LEFT(date_purchased,10)
order by date_purchased desc
limit 1) as ot_total



FROM
zen_orders
INNER JOIN zen_orders_total ON zen_orders_total.orders_id = zen_orders.orders_id
where left(date_purchased,10) = '2012-12-10'

order by date_purchased desc
limit 1


Returns the following:
left(date_purchased,10) ot_subtotal ot_coupons ot_shipping ot_tax ot_gv ot_total
12/14/12 xx.00 xx.00 xx.00 xx.00 xx.00 xx.00



I would love to have it return a bunch of days (maybe 7 at a time)

Not including the limit 1 and such returns a mess in the array or an error of operand should include one column or subquery has too many rows.

Please advise so I can keep my hair. :)