다음 구조의 테이블이 있습니다.Cant는 자체 조인 쿼리를 계산합니다.
+-----------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+-------+
| linq_order_num | char(32) | NO | PRI | NULL | |
| order_status_id | int(11) | YES | MUL | NULL | |
| order_id | varchar(100) | YES | | NULL | |
| item_name | varchar(120) | YES | | NULL | |
| item_cost | float | YES | | NULL | |
| custmer_id | int(11) | YES | MUL | NULL | |
| order_date_time | datetime | YES | | NULL | |
| order_category | varchar(120) | YES | | NULL | |
| ordered_by | int(11) | YES | MUL | NULL | |
| linq_shipping_cost | float | YES | | NULL | |
| website_shipping_cost | float | YES | | NULL | |
| total_cost | float | YES | | NULL | |
| advance_amount | float | YES | | NULL | |
| website | varchar(120) | YES | | NULL | |
| other | varchar(120) | YES | | NULL | |
| rvn | int(11) | YES | | NULL | |
| received_date | datetime | YES | | NULL | |
| delivered_date | datetime | YES | | NULL | |
| store_id | int(11) | YES | MUL | NULL | |
+-----------------------+--------------+------+-----+---------+-------+
그래서 매일 전체 주문 비용을 알아야합니다.이 쿼리를 사용하여 얻을 수 있습니다.
select sum(total_cost), date_format(order_date_time,"%Y-%m-%d") from
order_item group by date_format(order_date_time,"%Y-%m-%d")
또한 배달 된 날짜의 총 잔액이 필요합니다.
select sum(total_cost-advance_amount),date_format(delivered_date,"%Y-%m-%d")
from order_item group by date_format(delivered_date,"%Y-%m-%d")
모든 일, 주문이 발생하지 않습니다 및 모든 일 배달은 하루 더 주문 그날의 총 비용은 0으로 표시되어야하며, 총 잔량이해야 표시로 존재 happen.If합니다 그날의 (total_cost-advance_amount)의 합계.
하나의 쿼리에서 위의 두 쿼리를 결합하여 결과를 얻을 수있는 방법이 있습니까? 그래서
는 특정 일의 일 동안 요약 : 내가 합계 (총 비용)가 필요 ordered_date_time는 D를 = 여기서, 을 내가 합 필요 (총 비용 -advance_amount) delivered_date = D 은 본질적으로 같은 테이블을 찾고 여기서Date Total Cost Total Delivery Amounts
d 500 2000
d1 0 900
d2 900 0
하위 쿼리를 사용해 보았습니다. 문제는이 D1의 경우 표시되지 않습니다이며, 여기서 그 날에 대한 총 비용은 0입니다
검색어 :
select
date_format(order_date_time,"%Y-%m-%d") date,
sum(total_cost) total,
sum(advance_amount) advance_amount,
IFNULL((select sum(total_cost-advance_amount)
from order_item a
where date_format(a.delivered_date,"%Y-%m-%d") = date_format(d.order_date_time,"%Y-%m-%d")),0) delivery_amount
from order_item d
group by date_format(order_date_time,"%Y-%m-%d"), delivery_amount
미래에는 테이블 스키마에'describe'를 사용하지 마십시오. 'show create table order_item'을 사용하십시오. 누군가가 사용하는 것은 사실상 쓸모가 없다고 설명합니다. – Drew