![](/img/trans.png)
[英]same sql query works using phpmyadmin but does not work using php
[英]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.