[英]Returning count using multiple subqueries
原諒我的無知,但是sql-server不是我的強項。 我正在嘗試使用子查詢(相關子查詢?)從兩個映射表中檢索行數。 如果刪除一個子查詢,則一切正常,但是如果同時包含兩個子查詢,則無法獲得預期的行數。
SELECT
a.id,
a.name,
al_1.locationid as LocationCount,
af_1.FuncAreaId as FuncAreaCount
FROM
application as a inner join
applicationlocation as al_1 on a.id = al_1.appid inner join
applicationfuncarea as af_1 on a.id = af_1.AppId
WHERE
al_1.locationid in
(
SELECT count(locationid)
FROM applicationlocation as al_2
WHERE al_2.appid = al_1.appid
)
AND
af_1.funcareaid in
(
SELECT count(funcareaid)
FROM applicationfuncarea as af_2
WHERE af_2.appid = af_1.appid
)
如果我沒弄錯您想要在這里實現什么,那么可以通過使用COUNT
和DISTINCT
運算符進行分組來實現:
SELECT
a.id,
a.name,
COUNT(DISTINCT al_1.locationid) as LocationCount,
COUNT(DISTINCT af_1.FuncAreaId) as FuncAreaCount
FROM
application as a inner join
applicationlocation as al_1 on a.id = al_1.appid inner join
applicationfuncarea as af_1 on a.id = af_1.AppId
GROUP BY a.id, a.name
在不查看數據和預期結果的情況下很難判斷結果是否正確。 如果上述方法不起作用,請嘗試刪除DISTINCT
運算符,然后查看是否獲得所需的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.