2

合計数を取得するためのクエリは次のとおりです。

SELECT       
    MemberShipMaster.Id,   
    MemberShipMaster.Name,  
    TotalCount = 
    (
        SELECT
            ISNULL(COUNT(MemberPortfolio.Id), 0) AS total
        FROM
            JFPMembers
            INNER JOIN MemberPortfolio 
                ON JFPMembers.MemberID = MemberPortfolio.MemberId
        WHERE
            JFPMembers.MembershipType = MemberShipMaster.Id 
            AND JFPMembers.IsActive = 1
            AND MemberPortfolio.IsActive = 1
    )  
FROM
    MemberShipMaster
    Left JOIN JFPMembers
        ON MemberShipMaster.Id = JFPMembers.MembershipType   
WHERE
    MemberShipMaster.Id <> 6
GROUP BY
    MemberShipMaster.Id,
    MemberShipMaster.Name
Order by
    MemberShipMaster.Name   

以下は私のテーブルスキーマです

SELECT [MemberID]        -- PK 
    ,[MembershipType]  --FK , table [MemberShipMaster]
FROM JFPMembers

SELECT [Id]       -- PK
    ,[MemberId] -- FK OF Table JFPMembers         
FROM MemberPortfolio

SELECT [Id]  --PK
    ,[Name]
FROM MemberShipMaster

必要なのは、MembershipType ごとのメンバー Portfolios の Total Count です。つまり、私の関係は次のようなものです。JFPMembers は、メンバー情報を保持するためのプライマリ テーブルです。メンバーには、プレミアム、法人、一般の 3 つのカテゴリがあります。これら 3 つのタイプは MemberShipMaster に保管されます。ID はそれぞれ 3、4、5 です。ポートフォリオを保持するためのもう 1 つのテーブルがあり、それぞれのメンバーを MemberId として関連付けます。

しかし、 MemberShipMaster.Id で複数の値または参照エラーが発生しています。私を助けてください...

4

1 に答える 1

0

新しいコード:

SELECT abb1.Id, abb1.Name,   
TotalCount =  
(SELECT 
        ISNULL(COUNT(abb3.Id), 0) AS total 
    FROM 
        JFPMembers as abb4 
        INNER JOIN MemberPortfolio as abb3 
            ON abb4.MemberID = abb3.MemberId 
    WHERE 
        abb4.MembershipType = abb1.Id  
        AND abb4.IsActive = 1 
        AND abb3.IsActive = 1)   

FROM 
    MembershipMaster as abb1 
    Left JOIN JFPMembers as abb2
        ON abb1.Id = abb2.MembershipType    
WHERE 
    abb1.Id <> 6 
GROUP BY 
    abb1.Id, 
    abb1.Name 
Order by 
    abb1.Name  
于 2012-08-21T14:42:19.947 に答える