這看起來像是一個常規的事情,但我似乎無法找到如何去做。SQL - 在聯合查詢中只計算一個表的條目
我有一個連接查詢
SELECT a.nom_batim, COUNT(b.maxten) AS NumFaulty
FROM tblTrials AS b, tblRooms AS a
WHERE b.batiment = a.batiment
AND b.maxten > 10
GROUP BY a.nom_batim
ORDER BY a.nom_batim
應該只返回tblTrials項的計數。但是,由於我不知道如何編碼,因此它目前計數的所有發生次數爲b.maxten > 10
,所有次發生次數爲b.batiment = a.batiment
。表中有1個實際發生的b.maxten > 10
,但是b.batiment = a.batiment有231個發生(表格設置不好,不是我的選擇;這些表被認爲是隻讀給我的),所以它返回一個計數的123.
我如何COUNT(b.maxten)
正確,但仍然顯示a.nom_batim
作爲batiment
ID字段的用戶友好表示? (a.nom_batim
是建築#batiment
長的名字)
UPDATE
這是我結束了迄今爲止做..
SELECT a.nom_batim, COUNT(b.batiment) AS NumFaulty
FROM (SELECT DISTINCT nom_batim, batiment FROM tblRooms) AS a
INNER JOIN tblTrials AS b ON a.batiment = b.batiment
WHERE b.maxten > 10
GROUP BY a.nom_batim
ORDER BY a.nom_batim
它的工作原理,但似乎是一個資源豬時,我只需要來自tblRooms的最多30個值,但必須查詢所有5000多行,只選擇不同的batiment
值。沒有batiment
表tblBatiment: batiment, nom_batim
沒有辦法做到這一點我知道這是最好的方式,但我沒有訪問權限。
我剛剛發佈後發現(似乎發生),但想到也許額外的查詢會降低性能。似乎沒有另一種簡單的方法,雖然.. – StuckAtWork
它不應該太低效。所有的記錄將被分組並計算一次,然後合併一次以獲得結果。如果您想確定,可以查看查詢計劃。 – mellamokb
原來你不能這樣做......它期望'batiment'作爲對用戶不友好的聚合函數的一部分。我需要使用FROM(SELECT ...)填充nom_batim,而不是將FROM(SELECT ...)放在tblTrials上。不知道爲什麼,但它的工作。 – StuckAtWork