簡體   English   中英

使用多個子查詢返回計數

[英]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
        )

如果我沒弄錯您想要在這里實現什么,那么可以通過使用COUNTDISTINCT運算符進行分組來實現:

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.

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