我正在尝试创建一个查询,向我显示在日期范围1中使用其帐户中的服务的成员,然后在日期范围2中未使用其帐户中的服务。
我使用' 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)
我得到的错误如下:
答案 0 :(得分: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)