3

提出物の合計を取得しようとしています.2つの結果が必要です.1つは特定のステータスの提出物で、もう1つはすべてのステータスの提出物です:

SELECT submissions.campid, 
       COUNT(submissions.id) AS subsCountTotal, 
       (SELECT COUNT(submissions.id)
        FROM submissions,campaings  
        WHERE submissions.campid = campaings.id 
        AND campaings.status = 1 
        and submissions.time  >= campaings.startdate 
        and submissions.status = 10
        GROUP BY submissions.campid) AS subsCountngood 
FROM submissions, campaings 
WHERE submissions.campid = campaings.id 
AND  campaings.status = 1
and CASE 
    WHEN campaings.enddate = '0000-00-00' THEN  submissions.time  >= campaings.startdate 
    ELSE  submissions.time <= campaings.enddate
END
GROUP BY submissions.campid ` 

どんな助けでも大歓迎です:)ありがとう。

4

3 に答える 3

1

このサブクエリを見てください

SELECT COUNT(submissions.id)  
FROM submissions,campaings 
WHERE submissions.campid = campaings.id AND  campaings.status = 1 and submissions.time  >= campaings.startdate and submissions.status = 10  
GROUP BY submissions.campid 

グループ化すると、複数のグループ、つまり複数のカウントが得られる場合があります。1 つの行に複数の値を入れる方法。

于 2013-09-16T09:06:21.523 に答える
1

あなたの CASE はエラーになりますか (または、これは MySQL 固有の拡張機能ですか)?

IMHOあなただけが必要です:

SELECT submissions.campid, 
       COUNT(*) AS subsCountTotal, 
       SUM(CASE WHEN submissions.status = 10 THEN 1 ELSE 0 END) AS subsCountngood 
FROM submissions, campaings 
WHERE submissions.campid = campaings.id 
AND  campaings.status = 1
AND 
 (   submissions.time <= campaings.enddate 
  OR 
     (campaings.enddate = '0000-00-00' AND submissions.time  >= campaings.startdate)
 )
GROUP BY submissions.campid
于 2013-09-16T09:14:33.073 に答える
0
SELECT submissions.campid, 
       COUNT(submissions.id) AS subsCountTotal, 
       (SELECT COUNT(submissions.id)
        FROM submissions,campaings  
        WHERE submissions.campid = outer_camp.id 
        AND campaings.status = 1 
        and submissions.time  >= outer_camp.startdate 
        and submissions.status = 10
        GROUP BY submissions.campid) AS subsCountngood 
FROM submissions outer_sub, campaings outer_camp
WHERE submissions.campid = campaings.id 
AND  campaings.status = 1
and CASE 
    WHEN campaings.enddate = '0000-00-00' THEN  submissions.time  >= campaings.startdate 
    ELSE  submissions.time <= campaings.enddate
END
GROUP BY submissions.campid 

サブクエリを関連付ける必要があります。

于 2013-09-16T09:11:24.130 に答える