我在数据库查询(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”。在sql-server-ce中,不允许对'text‘数据类型使用Group by子句。“Text”数据类型已弃用,但sql-server-ce尚不支持“nvarchar(max)”...
你知道怎么解决这个问题吗?感谢您的帮助。
发布于 2012-04-12 01:30:03
我认为解决方案可能会更简单。我不知道你的元数据到底是怎样的,但我认为只要使用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编辑: 2ndOption
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) 请让我知道这个代码是否可以工作,以便找出另一个解决方法。
致以敬意,
https://stackoverflow.com/questions/10108269
复制相似问题