2014-06-07 6 views
1

Я хочу получить все customer_details все поля и общее количество счетов и сумму суммы счета, которая хранится в customer_details(id,name,address,...) и bill_details(bill_no,customer_id,price,...) таблице.Невозможно объединить два запроса в одном

Базовый запрос для извлечения оба первых это:

select cd.* from customer_details as cd 

Тогда это:

select customer_id,count(*) as billCount,sum(total) price from bill_details group by customer_id; 

Я не в состоянии объединить эти два в один запрос, чтобы извлечь все данные клиента с вексельной суммой и сосчитать.

ответ

0

Попробуйте использовать JOIN:

SELECT cd.*,IFNULL(T.billCount,0) as billCount,IFNULL(T.price,0) as price 
FROM customer_details as cd LEFT JOIN 
(SELECT customer_id,count(*) as billCount,sum(total) price 
FROM bill_details 
GROUP BY customer_id) T ON cd.id=T.customer_id 
+0

Неизвестный столбец T1.price неизвестен, Неизвестный столбец 'cd.customer_id' в 'on clause' – xrcwrn

+0

@xrcwrn: Ой! К сожалению, это была опечатка. Починил это. –

+0

Я попробовал ниже запрос, также правильно – xrcwrn

0

Я попытался следующие goving правильного результата Могу ли я использовать этот

select cd.*,IFNULL(count(*),0) as count,IFNULL(sum(bd.total),0) as total from customer_details as cd 
left join bill_details as bd 
on cd.id=bd.customer_id 
group by cd.id; 
+0

@Raging Bull Пожалуйста, смотрите, это также правильно. – xrcwrn

0
SELECT cd.id, 
     cd.nmae, 
     cd.address 
     IFNULLCOUNT(bd.*),0) AS billcount, 
     IFNULL(SUM(bd.price * bd.quantity),0) as total /* I suppose you have a quantity field in bd */ 
FROM customer_details cd 
LEFT JOIN bill_details bd 
ON cd.id = bd.customer_id 
GROUP BY cd.id, 
     cd.nmae, 
     cd.address 
Смежные вопросы