我有以下查詢來返回客戶使用的作業(訪問次數)和他/她使用的獨特的獸醫數量。SQL上的WHERE子句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
當我添加一個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
然而,在這種情況下,我只得到,雖然我使用的是左連接,爲客戶誰沒有任何取消或重新安排訪問,埃本的客戶。
我該如何適應WHERE子句?
strickt01給予了正確的答案後再試。在外連接記錄中,列是空的,因此比較列'Status'與'=','<>'或'!='永遠不會是真的,因此您的外連接記錄將被刪除,是內連接。我想補充一點,'AND!='在'NOT IN'中更具可讀性:'visit.Status NOT IN('Canceled','ReScheduled')'。 –
同意重做'NOT IN' – strickt01