簡體   English   中英

使用兩個過濾器時,SQL查詢不起作用

[英]SQL query does not work when using two filters

我正在研究將在我的網站中實施的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時才有效,我無法使它在兩個約束條件下都能正常工作。 總而言之,總的來說,如果表5中主鍵(column1)的出現次數少於3次或根本不在表5中,我希望對行進行計數。

謝謝。

您需要進行LEFT JOIN並在WHERE上添加<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 […]
LEFT JOIN ( SELECT column1 , COUNT(column1) N
            FROM Table5 
            GROUP BY column1) e 
    ON e.column1=a.column1
WHERE a.column2 IS NULL
AND (e.N<3 OR e.column1 IS NULL)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM