2017-10-01 6 views
0

SQLには小さな問題があります。私は行のIDを選択し、配列(または何か)にグループ化する必要がありますか?そこにタイムスタンプの列があります。このような行がある場合 だから:タイムスタンプを使用して月ごとにSQL結果を解析するMySQL

ID Timestamp 
1 blalba(1.10.2017) 
2 blabla(2.10.2017) 
3 blabla(1.5.1996) 

は出力が

array(
    [5.1996] => array([3]), 
    [10.2017] => array([1,2]); 
) 

(またはこのようなもの)のようになります。 これはPHPでいくつかのPHPライブラリを使用して可能ですか?または、私自身のクラスを実装する必要がありますか?

答えて

1

おそらくまあgroup_concat

select group_concat(id separator ', ') as myList, 
DATE_FORMAT(Timestamp, '%Y-%m') from <YOUR_TABLE> 
GROUP BY DATE_FORMAT(Timestamp, '%Y-%m'); 
+0

しかし、同じ月が2つの異なる年にはどうなりますか? –

+0

@TimBiegeleisenちょうど実現しました。修正されました。 – Ravi

0

さてあなたは、月ごとに発注して、MySQL側でこれを処理される可能性があります/年:

SELECT 
    ID, Timestamp 
FROM yourTable 
ORDER BY 
    DATE_FORMAT(Timestamp, '%Y-%m'); 

ように命じられるPHPに結果セットを返します。このクエリは、同じ月のすべてのレコードと年は一緒に集まります。この結果セットを反復して、必要に応じてレコードを処理できます。

+0

を探しています。どのようにSQLを管理する場合は、テーブルの名前は、 'ID'は私が格納する必要がありますとdate_createdはタイムスタンプの列ですか?このSQLの出力を実行しようとしたときにこのエラーが発生しました。 'GROUP BY DATE_FORMAT(タイムスタンプ、'%Y-%m ')'という行の2行目に文法エラーがあります – Johnczek

+0

@Johnczek私が提案しているのは、通常のPHP MySQLクエリを実行してから、一度に1か月だけ処理できるように結果を並べることです。 –

+0

申し訳ありませんが、悪いエラーです。これは正しいものです。3行目のorder ORDER BY DATE_FORMAT(タイムスタンプ、 '%Y-%m')の近くの構文エラー – Johnczek

関連する問題