我正在研究一個SQL查詢,該查詢將被實現到我的網站中以顯示一個表。這個特定的查詢將只填充一個表格單元格和它計數的數字。當使用兩個過濾器時SQL查詢不起作用
當前感謝下面的最後一個INNER JOIN,它只在表5中的主鍵(column1)被發現少於3次時計數行。直到這裏查詢完美地工作。
SELECT COUNT (a.column1) AS test
FROM Table1 a
INNER JOIN Table2 b ON […]
INNER JOIN Table3 c ON […]
INNER JOIN Table4 d ON […]
INNER JOIN (SELECT column1 FROM Table 5 GROUP BY column1 HAVING COUNT (column1)<3) e ON e.column1=a.column1
WHERE a.column2 IS NULL
問題是我還想計算沒有出現在Table5(但存在於Table1中)的行。目前,我得到這個工作的唯一途徑是通過添加以下代碼
AND a.column1 NOT IN (SELECT f.column1 FROM Table5 f)
但是,它只能在最後的INNER JOIN不包括在內,我不能讓它與兩個約束工作。基本上,總結一下,如果主鍵(column1)在table5中出現的次數少於三次,或者如果它不在table5中,那麼我希望計數行。
謝謝。
零小於3爲什麼需要第二個條件? – 2013-03-25 19:59:55
@ PM77-1因爲'NULL'不是零? – Lamak 2013-03-25 20:02:50
@ PM77-1該條件計算在表5中找到主鍵(column1)的次數。因此0意味着主鍵從未找到(但它不能計算那些不存在的東西)。這就是爲什麼我首先遇到了這個問題。 – BillyCode 2013-03-25 20:04:39