0

最近我的存储过程出现问题,它运行得太慢,所以我的一位同事建议交叉应用,他说交叉应用作为内部连接工作,但不需要表之间的命令键。

我的情况是我有三个表crossarticle_articlecrossarticle_articletocategory现在crossarticle_article 我想检索所有categoryid为 4 的记录,categoryid存储在crossarticle_articletocategory

据我了解,我为它创建了以下查询:

SELECT *
FROM   crossarticle_article c
       CROSS APPLY
crossarticle_articletocategory cc1
CROSS APPLY
crossarticle_category cc2
WHERE  cc2.id = 1

此查询应仅返回crossarticle_article类别 id 匹配 1 的记录,但它返回所有 3 个表中的所有记录。

我哪里出错了,如果这不是使用交叉应用的方式,那么如何使用,它的优势是什么。

交叉应用是否适用于相同的表......如果是这样,那么可能是什么情况......

4

1 回答 1

1

假设 id 是所有表中的关键字段,查询应该是:

SELECT c.*,
       c1.colXXX,
       c2.colYYY --ALL columns  u need
FROM   crossarticle_article c
       CROSS APPLY(
    SELECT cc1.colXXX
    FROM   crossarticle_articletocategory cc1
    WHERE  cc1.id = c.id
) c1
CROSS APPLY(
    SELECT cc2.colYYY
    FROM   crossarticle_category cc2
    WHERE  cc2.id = c.id
) c2
WHERE  c.id = 4
于 2011-06-10T07:09:49.303 回答