2011-12-12 80 views
1

好吧,我一直在使用MySQL很久以至於我忘記了使用MS SQL比使用MS SQL更容易。我遇到了什麼應該是一個簡單的嵌套查詢的問題。使用SQL CE嵌套查詢時遇到問題

我有兩個表,組和group_members。

我想從group_members中選擇數據和從group_members中使用groups.id作爲子查詢參數的記錄數。

這裏是我使用的查詢:

SELECT id AS [Group ID], 
     type, 
     name, 
     (SELECT COUNT(1) FROM group_members WHERE (group_id = [Group ID]) AND (paid = 1)) + '/' + (SELECT COUNT(1) FROM group_members WHERE (group_id = [Group ID])) 
FROM groups 

對於每個組,這將告訴我的類型,名稱,多少小數形式支付(即「6/10」)。

當我嘗試在SQL CE中使用此查詢時,出現錯誤:「解析查詢時發生錯誤。」

如果我單獨運行查詢,它們工作正常,所以我猜測SQL CE處理嵌套查詢與MySQL方法的方式存在問題。

任何意見將非常感激!

回答

2

對於任何感興趣的人,我終於可以通過子查詢的左連接而不是在主SELECT語句中調用它們來完成此操作。

這裏是工作的查詢:

SELECT grps.group_name, 
     CASE 
       WHEN members1.paid_count IS NULL 
        THEN 0 
       ELSE members1.paid_count 
     END AS paid, 
     CASE 
       WHEN members2.member_count IS NULL 
        THEN 0 
       ELSE members2.member_count 
     END AS total_members 
FROM groups AS grps 
LEFT JOIN (SELECT group_id, COUNT(id) AS paid_count FROM group_members WHERE paid = 1 GROUP BY group_id) AS members1 ON grps.id = members1.group_id 
LEFT JOIN (SELECT group_id, COUNT(id) AS member_count FROM group_members GROUP BY group_id) AS members2 ON grps.id = members2.group_id