2012-01-12 20 views
0

私はデータベースから最小値と最大値を取得する必要があるプロジェクトに取り組んでいます。また、フィールドの最初の部分を文字に分割し、このフィールドでグループ化する必要があります。私が追加しようとするのであれば、基本的に、私は以下MySQLの最小値と最大値グループByとサブストリング

2012-01-01 Unknown username/password attempted to login. User: admin

2012-01-01 Failed to add user account. MySQL Error: certain my sql error Unknown

2012-01-02 Failed to add user account. MySQL Error: certain my sql error Unknown

2012-01-04 Unknown username/password attempted to login. User: administrator

を持って、データベース内の日付

SELECT ala_type, partMsg, 
wholeMsg, ala_level, ala_page, COUNT(wholeMsg) AS msgCount FROM 
(
SELECT ala_type, SUBSTRING_INDEX(ala_message, ':', 1) AS partMsg, ala_message AS wholeMsg, 
ala_level, ala_page FROM alarms a) p 
GROUP BY partMsg 

にこのビットを示すことなく、働いている私が使用していたクエリは、予想通りに正しくグループ化されるがされmin(date_field)は1レコードしか表示しません。以下は

私は2番目の文でala_dateを入れて、ちょうど分(ala_date)を持っていない場合、私は

SELECT ala_date, min(ala_date), max(ala_date), ala_type, partMsg, wholeMsg, ala_level, ala_page, COUNT(wholeMsg) AS msgCount FROM ( SELECT ala_date, min(ala_date), max(ala_date), ala_type, SUBSTRING_INDEX(ala_message, ':', 1) AS partMsg, ala_message AS wholeMsg, ala_level, ala_page FROM alarms a) p GROUP BY partMsg

を試してみましたが、クエリでそれがフィールドala_dateを見つけることができないと言います。私は、クエリを実行したときしかし、私は1つのレコードのみを取得していますし、私は次の

2012-01-01 2012-01-04 Unknown username/password attempted to login.User: 2

2012-01-01 2012-01-02 Failed to add user account. MySQL Error: > certain mysql error 2

2を参照すると期待しているだろうと期待される結果の最後にメッセージが発生した回数をカウントです。

私は何を実際に取得していますがある:それは今だけ1枚のレコードと、最小値と最大値を示している

2012-01-01 2012-01-01 2012-01-01 Failed to add user account... 1

は同じであり、カウントは1ではなく2

で何ができました私が得ることを期待しているものを得るために。

ご協力いただきありがとうございます。

答えて

0

あなたは(私のmysqlは錆びています)のようなことをやっていますが、その部分は音です。

Select SomeDate,SomeMessage From SomeTable 
inner join (
Select Min(SomeDate) as SomeDate From SomeTable) earliest 
On earliestDate.SomeDate = SomeTable.SomeDate 

つまり、各グループの最小日付を見つけて、元のテーブルに戻ってその日付にあったレコードを検索します。