Mantis Bug Database(MySQLを使用)を使用して、過去2週間以内に重大度に変化があったバグをクエリしたいバグを示す必要があります。MySQL:タイムスタンプ上でmax関数を使用した望ましくない結果
問題は、bugIDごとに複数のエントリ(プライマリキー)が表示されることです。これは、バグごとに最新の変更のみが必要なので、私の望む結果ではありません。これは、どういうわけか、max関数とgroup by節を不正に使用していることを意味します。私はこのクエリで3つのエントリを取得する例えばID 8とバグについて
SELECT `bug_id`,
max(date_format(from_unixtime(`mantis_bug_history_table`.`date_modified`),'%Y-%m-%d %h:%i:%s')) AS `Severity_changed`,
`mantis_bug_history_table`.`old_value`,
`mantis_bug_history_table`.`new_value`
from `prepared_bug_list`
join `mantis_bug_history_table` on `prepared_bug_list`.`bug_id` = `mantis_bug_history_table`.`bug_id`
where (`mantis_bug_history_table`.`field_name` like 'severity')
group by `bug_id`,`old_value`,`.`new_value`
having (`Severity_modified` >= (now() - interval 2 week))
order by bug_id` ASC
:
ここでは、私のクエリを見ることができます。 id 8のバグは、実際には過去2週間で3つの重大度の変更がありましたが、最新の重大度の変更を取得したいだけです。
質問にはどのような問題がありますか?
ありがとう: ソリューションの別の部分は、where句のサブクエリました。制限1では、クエリ全体に対して1行しか得られないことが示されています(結果は1つのバグです)。私はサブクエリであなたの意図は、バグごとに最新の結果を取得することでした(降順で日付をソートする(最新のものを上に置く)とそれはバグ1つの結果で制限しますが、意図したとおりには動作しません。 –
@Bruder - あなたのDBにアクセスすることはできませんので、私はあなたの目で見ているだけではなく、私のクエリをデバッグすることはできません。サブクエリを取り出して何が得られるかを見るだけでトラブルシューティングできます。おそらくあなたのデータには過去2週間に1つのバグしかありませんでしたか?がんばろう! (または、データとテーブルをSqlFiddle.comに置くことができ、さらにクエリをデバッグできます。) – leeyuiwah
最後の2週間に複数のバグのエントリが複数あります。 しかし、これらのすべてのバグについては、各バグの最新のエントリを取得したかったのです。 あなたが提案したサブクエリは私の場合は機能しません。 –