2016-07-22 8 views
0

少し複雑なクエリで作業しています。ここでは、publication_dateカラムに年が来た回数を数える必要があります。私はlaravelのクエリービルダーを使って、次のようなことをしています:mysqlのDATE型から年が何回繰り返されたかを数えるには?

$publication_years = Patent::whereIn('id', $ids)->select(DB::raw('publication_date, COUNT(YEAR(publication_date)) AS count'))->groupBy('publication_date')->get(); 

これは機能しません。これはまだ日付全体をチェックしています。どうすれば修正できますか?私はSUBSTRも試してみましたが、私はCONVERTCASTを使って変換しようとしましたが、無駄でしたか?誰もが考えている?

+0

同じ値をGROUP BYする必要があります。 (もちろん、同じ文でpublication_date列を選択することはできません)。 – CBroe

答えて

1

代わりに、完全な日付のYEAR('publication_date')とのことで、グループなければならない私はlaravelとその慣れていないんだけど、このクエリは

SELECT YEAR(publication_date) AS date_year, COUNT(YEAR(publication_date)) AS date_year_count FROM `your_table` 
GROUP BY date_year 
0

私の提案では、選択クエリを使用して 'publication_date'テーブルから日付フィールドを取り出し、行数をチェックして年カウントを取得しています。

1

のために役に立つかもしれません。だからあなたのクエリが


$publication_years = Patent::whereIn('id', $ids)->select(DB::raw('YEAR(publication_date), COUNT(YEAR(publication_date)) AS count'))->groupBy(DB::raw('YEAR(publication_date)'))->get(); 

は、結果セット PUBLICATION_DATE代わりのPUBLICATION_DATEの年で

groupBy('publication_date') 

意志グループを以下のため、このようになります。

関連する問題