SQL JOIN上的WHERE子句

Azf*_*hif 0 mysql sql join

我有以下查询来返回客户使用的作业(访问)的数量以及他/她使用的不同的兽医.

SELECT 
customer.users_id AS CustID, 
COUNT(VisitID) AS Jobs, 
COUNT(DISTINCT VetID) AS Resources 
FROM customer 
LEFT JOIN visit ON customer.users_id = visit.CustID 
GROUP BY customer.users_id
Run Code Online (Sandbox Code Playgroud)

当我添加一个WHERE子句来计算只有未重新计划或已取消的访问时,我的查询看起来像这样.

SELECT 
customer.users_id AS CustID, 
COUNT(VisitID) AS Jobs, 
COUNT(DISTINCT VetID) AS Resources 
FROM customer LEFT JOIN visit ON customer.users_id = visit.CustID 
WHERE visit.Status != 'Cancelled' AND visit.Status != 'ReScheduled' 
GROUP BY customer.users_id
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,我只会得到没有取消或重新安排访问的客户,虽然我正在为客户使用左连接.

我如何适应WHERE子句呢?

str*_*t01 5

你不想要一个WHERE条款.这只是变成了LEFT JOIN一个INNER JOIN.你需要一个ANDLEFT JOIN:

SELECT customer.users_id AS CustID, COUNT(VisitID) AS Jobs, COUNT(DISTINCT     VetID) AS Resources 
FROM customer 
LEFT JOIN visit ON customer.users_id = visit.CustID 
AND visit.Status NOT IN('Cancelled','ReScheduled')
GROUP BY customer.users_id
Run Code Online (Sandbox Code Playgroud)