0

我在数据库查询(SQL Server)中使用了以下 sql 语法

SELECT Nieuwsbrief.ID
    , Nieuwsbrief.Titel
    , Nieuwsbrief.Brief
    , Nieuwsbrief.NieuwsbriefTypeCode
    , (SELECT COUNT(*) AS Expr1 
        FROM NieuwsbriefCommentaar 
        WHERE (Nieuwsbrief.ID = NieuwsbriefCommentaar.NieuwsbriefID 
                AND NieuwsbriefCommentaar.Goedgekeurd = 1)) AS AantalCommentaren 
FROM Nieuwsbrief 

我现在正在更改为 sql-server-ce (紧凑版),它不允许我有这样的子查询。建议的解决方案:inner join。但由于我只需要子表“”的计数,因此NieuwsbriefCommentaar我必须在我的基表属性上使用“ group by”子句以避免结果集中出现双精度数。

但是“ Nieuwbrief.Brief”属性的数据类型为“ text”。text中的“ ”数据类型不允许使用 Group by 子句sql-server-ce。' Text' 数据类型已弃用,但sql-server-ce还不支持 ' nvarchar(max)'...

知道如何解决这个问题吗?谢谢你的帮助。

4

1 回答 1

2

我认为解决方案可能更容易。我不确切知道您的元数据如何,但我认为此代码只需使用 LEFT JOIN 即可满足您的要求。

    SELECT Nieuwsbrief.ID 
    , Nieuwsbrief.Titel 
    , Nieuwsbrief.Brief 
    , Nieuwsbrief.NieuwsbriefTypeCode 
    , COUNT(NieuwsbriefCommentaar.NieuwsbriefID) AS AantalCommentaren
FROM Nieuwsbrief  
LEFT JOIN NieuwsbriefCommentaar  ON (Nieuwsbrief.ID = NieuwsbriefCommentaar.NieuwsbriefID)
WHERE NieuwsbriefCommentaar.Goedgekeurd = 1

编辑:第二选项

SELECT N.ID, N.Titel, N.Brief, N.NieuwsbriefTypeCode, G.AantalCommentaren  FROM Nieuwsbrief as N LEFT JOIN (SELECT NieuwsbriefID, COUNT(*) AS AantalCommentaren FROM NieuwsbriefCommentaar GROUP BY NieuwsbriefID) AS G ON (N.ID = G.NieuwsbriefID) 

请让我知道此代码是否有效,以便找到另一种解决方法..

问候,

于 2012-04-11T17:30:02.703 回答