Отображение COUNT в подзапросе LEFT JOIN? - PullRequest
0 голосов
/ 30 августа 2011

У меня есть запрос, который выбирает информацию о заказе между выбранным периодом времени. Я хочу включить предложение where, ограничивающее информацию о заказе всеми заказами, которые имеют всего 1 заказ (за все время).

Вот что у меня есть:

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 

Этот запрос дает мне все заказы за указанный период времени. Мне нужно включить подзапрос (или что-то подобное), который подсчитывает все предыдущие (за все время) заказы (order_count) BY Customers_id. Затем включите 'HAVING order_count <2' в предложении where. </p>

Возможно ли это? Имеет ли это смысл?

1 Ответ

2 голосов
/ 30 августа 2011

Просто добавьте это в вас, где близко:

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

Или, если вы хотите вернуть количество заказов, добавьте его в предложение SELECT и добавьте предложение HAVING:

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
...