开发者

Showing COUNT in LEFT JOIN subquery?

开发者 https://www.devze.com 2023-04-01 15:08 出处:网络
I have a query that selects order info between a selected time period.I want to include a where clause that limits the order info to all orders that have only 1 order total(through ou开发者_开发问答t

I have a query that selects order info between a selected time period. I want to include a where clause that limits the order info to all orders that have only 1 order total(through ou开发者_开发问答t all time).

Here is what I have so far:

SELECT o.orders_id, o.customers_id, o.customers_name, o.payment_method, o.date_purchased,o.orders_status, o.shipping_status, ot.value 
FROM orders as o 
LEFT JOIN orders_total as ot ON o.orders_id = ot.orders_id 
WHERE date_purchased between '2011-07-30' AND '2011-08-30 23:59:59' 
AND ot.class = 'ot_total' 
AND o.customer_service_id = '' 
OR o.customer_service_id IS NULL 
ORDER BY orders_id DESC 

This query gives me all orders in the specified time period. I need to include a subquery(or something similar) that counts all previous(through out all time) orders(order_count) BY customers_id. Then include a 'HAVING order_count < 2' in the where clause.

Is this possible? Does this make sense?


Just add this in you where close:

AND (
    SELECT COUNT(o.id)
    FROM   orders o2
    WHERE  o2.customers_id = o.customers_id
) < 2

Or if you want to return the orders count, add it in your SELECT clause, and add a HAVING clause:

SELECT o.orders_id, ..., (
    SELECT COUNT(o.id)
    FROM   orders o2
    WHERE  o2.customers_id = o.customers_id
) as orders_count
...
HAVING orders_count < 2
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号