2016-12-09 11 views
0

これはSQLiteの経験がある人にとっては単純なものだと思うが、かなり不透明だ。ADO.NET(Xamarin、C#)を使用して、単純なSQLiteデータベースから特定の値の最新のエントリを照会

私はこのような列を持つデータベース「MYDB」を持っている:

Name Date Val1 Val 2 Val3 
Greg time1 blah blah blah 
Stev time2 blah blah blah 

私のAndroidアプリは、ユーザーがプロファイルから自分の名前を選択することができ、そして、彼らはアプリに基づいて値を変更すると、それが追加されます列。更新は次のようになります。

Name Date Val1 Val 2 Val3 
Greg time1 blah blah blah 
Stev time2 blah blah blah 
Stev time3 blah1 blah1 blah1 
Stev time4 blah2 blah2 blah2 
Greg time5 blah1 blah1 blah1 

コードの一部に、特定の名前の最新エントリの値をロードします。私の上記の例では、私はGregをtime5にしたいと思います。もし私がStevを選択したら、Stevとtime4が欲しいです。

私は一種の「名前」は、ユーザーがデータベースからロードすることを選択した文字列と名前で、次のコマンドでこれを行うことができます。もちろん

contents.CommandText = "SELECT * FROM mydb WHERE [Name] = @Name AND [Date] = (Select MAX([Date]) from mydb)"; 
    contents.Parameters.AddWithValue("@Name", Name); 

、これが唯一の選択に私を可能に最新の値の期間。私はStevの最新のデータにアクセスすることはできません。上記のコードでは最新のデータのみを選択できるからです。

名前を入力したユーザーの最新のエントリを取得しようとしていました。 ADO.NETの経験を持つ人が適切なコマンドを作成するのに役立つことができますか?

+0

私はあなたが望むものは、日付のDESCの制限1 を追加することだと思います。 "SELECT * FROM mydb WHERE [Name] = @Name ORDER BY DATE DESC LIMIT 1"; –

+0

救助へのロブ!それは完璧に働いた。あなたのご意見ありがとうございます。私はSQLに慣れていないし、Web上で簡潔なリファレンスを見つけていないので、ただパニックに陥ったGoogle検索であり、この場合、私が探していたものを正確には知りませんでした。 –

答えて

0

私はあなたがしたいと思うのは、 "SELECT * FROM mydb WHERE [Name] = @Name ORDER BY DATE DESC LIMIT 1"というようにORDER BY DATE DESC LIMIT 1を追加することです。 - Rob Peterson 2時間前

このコメントは完璧に機能しました。

関連する問題