0
지난 6 주간 인보이스가 작성되지 않은 모든 고객을 나열하는 데 어려움을 겪고 있습니다. 두 테이블에 클라이언트와 송장이 관련되어 있습니다.지난 6 주간 인보이스가 작성되지 않은 고객, MySQL
select MAX(invoice.created_date) 'Last Invoice Date', invoice.invoice_no 'Invoice No.', DATEDIFF(curdate(), max(invoice.created_date)) 'Days since last invoice created', client.name 'Client'
from invoice
left join
client on invoice.client_id = client.id
where
datediff (curdate(), (select MAX(invoice.created_date) from invoice left join client on invoice.client_id = client.id)) > 42
group by client.id;
을하지만 빈 집합을 반환 : 나의 현재 쿼리는 다음과 같습니다. 도움이 필요하십니까
안녕 짐! 실제적으로 모든 고객에게 인보이스가 있다고 가정 해 봅시다. 모든 인보이스는 개별적으로 저장되며 고유 한 날짜가 있습니다. 당신이 제안한 쿼리는 지난 42 일 동안 인보이스가있는 클라이언트도 반환하지만 원하지 않습니다. 나는 최근 created_date가 "datediff (curdate(), i2.created_date)> 42)가 아니기 때문에 EXIST 내에 있다고 생각한다." 나는 max (i2.created_date)와 같은 것을 원하지만 물론 거기에 허용되지 않습니다. 아이디어가 있으십니까? –
@ErindPepi 지난 42 일 동안 일치하는 인보이스가 있으면 조건이 false가되기 때문에 존재하는 곳에서 최대 값은 필요 없습니다. 내가 사용하는 쿼리를 표시하기 위해 함께 넣어 SQL 바이올린을 얻을거야. – Jim
@ErindPepi'datediff' 부분이 오작동하는 것 같아서 내가 바꿨습니다. 사용 가능한 예 [here] (http://sqlfiddle.com/#!2/e5c70/2). – Jim