2013-04-11 9 views
0

У меня есть запрос MySQL, который извлекает данные из нескольких таблиц. Одним из полей является customer_id, который может появляться в результатах много раз. Есть ли способ, которым я могу добавить поле к моим результатам, показывающее количество раз, когда каждый уникальный customer_id появляется в наборе результатов? Мой запрос, как он стоит как следует ...Подсчет количества строк в результатах

SELECT customer.customer_id, customer.name, customer.email, Date_format(orders.datetime,'%d-%m-%Y') AS order_date, order_items.order_item_id, order_items.order_id 

FROM order_items, product, orders, customer 

WHERE order_items.product_id = product.product_id AND product.manufacturer = 'Nike' AND order_items.order_id = orders.order_id AND orders.customer_id = customer.customer_id ORDER BY customer_id, order_date 

Большое спасибо

ответ

0

Вы хотите добавить: в вашем SELECT ->COUNT(customer.customer_id)

И добавить конец запроса ->GROUP BY (customer.customer_id)

Вы ма y нужно немного подправить запрос - или сломать определенные SELECT термины в подзапросы, чтобы это работало.

+0

Простой и эффективный. Спасибо за помощь. – Jules

+0

Не беспокойтесь. –

0

Его неэффективен, но он должен делать свою работу:

SELECT 
    customer.customer_id, 
    customer.name, 
    customer.email, Date_format(orders.datetime,'%d-%m-%Y') AS order_date, 
    order_items.order_item_id, 
    order_items.order_id, 
    tmp.za_count 
FROM 
    order_items, product, orders, customer 
INNER JOIN (
    SELECT 
     customer.customer_id, 
     COUNT(*) as za_count 

    FROM 
     order_items, product, orders, customer 
    WHERE 
     order_items.product_id = product.product_id 
     AND product.manufacturer = 'Nike' 
     AND order_items.order_id = orders.order_id 
     AND orders.customer_id = customer.customer_id 
    GROUP BY 
     customer.customer_id 
) as tmp 
    ON tmp.customer_id = customer.customer_id 
WHERE 
    order_items.product_id = product.product_id 
    AND product.manufacturer = 'Nike' 
    AND order_items.order_id = orders.order_id 
    AND orders.customer_id = customer.customer_id 
ORDER BY 
    customer_id, 
    order_date 
Смежные вопросы