루닌 로마 :
다음 DB 구조를 고려
customer (id)
invoice (id, customer_id)
invoice_item (id, invoice_id, warranty_expiry)
나는 모든 항목이 만료 모든 고객을 선택해야합니다. 여기에 지금까지 무엇을 가지고
select * from customer c
inner join invoice i on c.id = i.customer_id
inner join invoice_item ii on i.id = ii.invoice_id
where ii.warranty_expiry < NOW()
group by c.id
having COUNT(ii.id) // <---
내가 뭔가를 넣어야 것처럼 느낀다 HAVING
절,하지만 각 클라이언트에 대한 항목의 정확한 수를 필요가 없습니다.
GMB :
당신은 참으로 사용할 수 having
주어진 고객이 만료 된 모든 항목이 있는지 확인하기 위해 절을. 이에 체크를 이동하여 작동 warranty_expiry
으로부터 where
받는 절에 having
다음과 같이 절 :
select c.id
from customer c
inner join invoice i on c.id = i.customer_id
inner join invoice_item ii on i.id = ii.invoice_id
group by c.id
having max(ii.warranty_expiry >= NOW()) = 0
참고 select *
및 group by
(MySQL의 이전 버전이 할 기본적으로 허용하지만) 잘 따라 가지 않는다. 당신은 당신이에서 유지하려는 열을 열거한다 select
절 과 에 group by
절.