2012-04-11 1 views
0

私は今変えてる私は私のデータベースクエリで使用される次のSQL構文(SQL Serverなど)SQL Server Compactのは、副選択を許可しませんが、内側には、テキストデータ型で許可されていないGROUPBYに参加

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」データ型のグループバイ句はsql-server-ceには許可されません。 'Text'データ型は廃止されましたが、はまだ 'nvarchar(max)'をサポートしていません...

これを解決する方法はありますか?あなたの助けにThx。

答えて

2

私は解決策がより簡単になると思います。私はあなたのメタデータがどういうものかは正確にはわかりませんが、このコードは単にLEFT JOINを使用するだけであなたの要求に合っていると思います。 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) 

、このコードは、別の回避策を見つけるために働く場合は私に知らせてください..

に関して、

+0

こんにちはJosemiguel、 THXのため:編集が

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 

あなたの入力。ただし、サブテーブルi.cをカウントするとNieuwsbriefCommenta.NieuwsbriefID、SELECT句の他の属性にグループ化が必要です。 SQLceエンジンによってスローされたエラー: '集計およびグループ化式でSELECT句には集計およびグループ化式のみが含まれます[Select句= Nieuwsbrief、ID] sqlserverceが許可する場合、GROUP BY句を追加しても問題ありませんこれはNieuwsbrief.Briefに掲載されていますが、データ型の「テキスト」と同じではありません。 よろしく – Batopilas

+0

オクラホマので、試してみてください。 ' SELECT N.IDは、N.Titelは、N.Brief、N.NieuwsbriefTypeCode Nieuwsbrief FROM N としてLEFTが のJOIN(NieuwsbriefCommentaarグループからAantalCommentaren AS NieuwsbriefID、COUNT(*)を選択BY NieuwsbriefID)AS ON(N.ID = G.NieuwsbriefID) ' –

+0

このクエリは正常に動作しますが、結果セットにカウントは含まれません...? – Batopilas