2017-05-16 8 views
0

日付範囲1のアカウントからサービスを使用したメンバーを表示し、その後日付のアカウントからサービスを使用しなかったメンバーを表示しようとしています範囲2。'AND NOT EXISTS'構文の問題を使用したSQL:ネストされたクエリ

「AND NOT EXISTS」を使用してネストされたクエリを使用してクエリを作成しましたが、エラーが発生し続け、その原因がわかりません。次のように

SELECT   
    SS.memid 
FROM 
    SS 
INNER JOIN 
    SSUSED ON SS.ssid = SSUSED.ssid 
INNER JOIN 
    MEMBERS ON SS.memid = MEMBERS.memid 
INNER JOIN 
    PRODUCTS ON SS.productid = PRODUCTS.productid 
INNER JOIN 
    PRODUCTCATS ON PRODUCTS.productcatid = PRODUCTCATS.productcatid 
       AND NOT EXISTS (SELECT SS_1.memid 
           FROM SS AS SS_1 
           INNER JOIN SSUSED AS SSUSED_1 ON SS_1.ssid = SSUSED_1.ssid 
           INNER JOIN MEMBERS AS MEMBERS_1 ON SS_1.memid = MEMBERS_1.memid 
           INNER JOIN PRODUCTS AS PRODUCTS_1 ON SS_1.productid = PRODUCTS_1.productid 
           INNER JOIN PRODUCTCATS AS PRODUCTCATS_1 ON PRODUCTS_1.productcatid = PRODUCTCATS_1.productcatid 
           WHERE (SSUSED_1.usedate BETWEEN @rvStartWeek2 AND @rvEndWeek2) 
            AND (PRODUCTS_1.productcatid IN (27, 28, 29, 58, 77, 75, 30, 61, 31, 32, 47, 68)) 
            AND (MEMBERS_1.siteid = @rvSite) 
          ) 
WHERE   
    (SSUSED.usedate BETWEEN @rvStartWeek1 AND @rvEndWeek1) 
    AND (PRODUCTS.productcatid IN (27, 28, 29, 58, 77, 75, 30, 61, 31, 32, 47, 68)) 
    AND (MEMBERS.siteid = @rvSite) 

私は取得していますエラーは次のとおりです。

enter image description here

+0

あなたのエラーメッセージは、アクセスする権限を持っていないと言いますパラメータとして使用されるCLRタイプ。私はこれがあなたの質問と関係がないと確信していません。 – SqlZim

答えて

0

たぶん、問題はサブクエリを存在しないようにリンクされていない主なクエリです。 それを試してみてください。

は、すべてのテーブルのエイリアスを作成し、サブクエリでのみ がサブクエリの「」のメインクエリに参加していない

SELECT   
    SS_0.memid 
FROM 
    SS SS_0 
INNER JOIN 
    SSUSED SSUSED_0 ON SS_0.ssid = SSUSED_0.ssid 
INNER JOIN 
    MEMBERS MEMBERS_0 ON SS_0.memid = MEMBERS_0.memid 
INNER JOIN 
    PRODUCTS PRODUCTS_0 ON SS_0.productid = PRODUCTS_0.productid 
INNER JOIN 
    PRODUCTCATS PRODUCTCATS_0 ON PRODUCTS.productcatid = PRODUCTCATS.productcatid 
       AND NOT EXISTS (SELECT SS_1.memid 
           FROM SS AS SS_1 
           INNER JOIN SSUSED AS SSUSED_1 ON SS_1.ssid = SSUSED_1.ssid 
           INNER JOIN MEMBERS AS MEMBERS_1 ON SS_1.memid = MEMBERS_1.memid 
           INNER JOIN PRODUCTS AS PRODUCTS_1 ON SS_1.productid = PRODUCTS_1.productid 
           INNER JOIN PRODUCTCATS AS PRODUCTCATS_1 ON PRODUCTS_1.productcatid = PRODUCTCATS_1.productcatid 
           WHERE (SSUSED_1.usedate BETWEEN @rvStartWeek2 AND @rvEndWeek2) 
            AND (PRODUCTS_1.productcatid IN (27, 28, 29, 58, 77, 75, 30, 61, 31, 32, 47, 68)) 
            AND (MEMBERS_1.siteid = @rvSite) 
            AND (SS_0.memid = SS_1.memid) -- Joint main Query and Subquery 
          ) 
WHERE   
    (SSUSED_0.usedate BETWEEN @rvStartWeek1 AND @rvEndWeek1) 
    AND (PRODUCTS_0.productcatid IN (27, 28, 29, 58, 77, 75, 30, 61, 31, 32, 47, 68)) 
    AND (MEMBERS_0.siteid = @rvSite) 
関連する問題