2016-09-14 28 views
1

誰かがこのクエリが構文エラーを生成している理由を知ることができますか?これは単純な広告データベースで、カテゴリーと広告が含まれています。このクエリは広告カテゴリのリストを取得しています。さらに、いくつの広告とアクティブな広告がいくつあるかをカウントします。後者は2週間を超えない広告を意味します。 PostgreSQLは言う:Postgres COUNT FILTER構文エラー - なぜですか?

構文エラーまたはその付近 "(" LINE 5:FILTER(WHERE

他COUNTだけで罰金広告.... ^に動作します私はとの問題が何得ることはありません。 FILTER句のおかげ

$data = pg_query($dbconn, 'SELECT categories.id, 
            categories.name, 
            COUNT(ads.id) AS ads_count, 
            COUNT(ads.id) 
             FILTER (WHERE ads.date > '.strtotime('-2 weeks').') 
             AS ads_active_count 
          FROM erpatak.ads_categories AS categories 
          LEFT JOIN erpatak.ads AS ads ON ads.category = categories.id' 
          .$filter.' 
          GROUP BY categories.id, categories.name 
          ORDER BY name 
          OFFSET '.$offset.' 
          LIMIT '.$maxcount); 
+0

あなたのエラーメッセージには「ads.date」はありませんが、代わりに「ads」がありますか –

+0

ads.dateがどのようなものになっているのかわからないということですか? –

+0

'pg_query'(変数なし)に送信されている完全なクエリ文字列を添付してください。また、あなたのPostgresサーバーのバージョンは何ですか? –

答えて

0

OK、私は解決策を見つけたカミルG.は私に明らかなように、COUNTは、私がここにあるバージョン9.1でフィルタリングすることはできません解決策は次のとおりです。!。。

COUNT(CASE WHEN ads.date > '.strtotime('-2 weeks').' THEN 1 END) AS ads_active_count

関連する問題