2017-03-14 7 views
-1

아래는 완벽하게오늘의 판매 보고서는

SELECT SUM(total_price) AS total FROM basket LEFT JOIN `orders` ON basket.order_id=orders.order_id WHERE orders.date_added BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 day) 

을하고있다 오늘 영업 보고서에 대한 내 쿼리입니다 지금 나는 돌아 오는 얼마나 많은 오늘날의 매출을 알고 또 다른 질의를 필요로한다 고객 (고객 당 이전의 구매 기록이 있는지 알기 위해 고객마다 고유 한 Orders 테이블에 모바일 열이 있음)

모바일 열을 사용해야하는 이유를 설명해 드리겠습니다. 전자 상거래 플랫폼에서 평소 고객 테이블을 가지고 있지 않다면, 일반적인 시나리오는 독특한 고객 테이블이 있다는 것입니다. tomer_id 열이 있으므로이 고객 ID는 주문 테이블에서 고객에게 주문을 할당하는 데 사용해야합니다. 고객이 새로운 것인지 아니면 돌아 오는 것인지를 이해할 수있는 유일한 방법은이 열이 없으므로 Orders 테이블에서 full_name 또는 휴대 전화 번호를 확인하는 것입니다. 지난 날의 기록이 있으면 고객이 반복되었음을 의미합니다. 자신의 이름이나 모바일에 대한 기록이 존재하지 않는 경우, 그것은 고객이 내가 그 Mobile 열이 포함 모르는

답변

0

새로운하지만 조건부 집계와 같이 작동을 의미

SELECT SUM(total_price) AS total, 
     SUM(case when Mobile is not null then total_price else 0 end) AS fromReturning 
FROM basket 
LEFT JOIN `orders` ON basket.order_id=orders.order_id 
WHERE country='ae' 
AND orders.date_added BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 day) 
AND orders.delivery_status <> -1 
+0

모바일 열은 고객의 이동입니다 아래와 같은 주문 테이블의 번호 order_id, full_name, 모바일, 주소, .... 당신 쪽에서 오해가 있다고 생각합니다 :) –

+1

그래서 열이 무언가로 가득 차면 그는 재 방문 고객입니다. 쿼리를 업데이트했습니다. –

+0

또는 좀 더 쉽게 만들어 보겠습니다. 고유 한 주문 테이블에 customer_id가 있다고 가정하십시오 (모바일 열에 대해서는 잊어주십시오). –