次のようにSQLiteを使用してRubyにデータベースを構築しています。
db.execute "CREATE TABLE IF NOT EXISTS Problems(ID INTEGER, stem BLOB NOT NULL, answer BLOB, datetime TEXT, lastmodifiedby TEXT, primary key (ID, datetime) )"
db.execute "INSERT INTO Problems VALUES(1, 'stem', 'answer', '12/26/2012 2:52:18 PM', 'bob')"
db.execute "INSERT INTO Problems VALUES(1, 'stem modified', 'answer', '12/26/2012 2:52:19 PM', 'bob')"
db.execute "INSERT INTO Problems VALUES(1, 'stem modified further', 'answer', '12/26/2012 2:52:20 PM', 'bob')"
最初の3つのエントリのIDは同じですが、時間は異なります。現在、次のコードを使用して単一のエントリを抽出しています。
db = SQLite3::Database.new "#{dbname}"
stm = db.prepare "SELECT * FROM Problems WHERE ID=?"
stm.bind_param 1, id
rs = stm.execute
problem = rs.next
私の最初の質問-コードの最後の4行を要約する方法はありますか?
次に、Problemsデータベースからエントリを選択するときに、最新のエントリ(この場合は3番目のエントリ)が選択されるようにオプションを追加するにはどうすればよいですか?
最後に、特定のIDのすべてのエントリ(ここではint 1しかありませんが、実際には他にもたくさんあります)を選択して、文字列として出力したり、ファイルに書き込んだりする方法などを教えてください。
最近のエントリー選択に関する質問への回答を見つけましたが、それらは非常に複雑に見えます。ORDER BYは何らかの形で機能しますか?
助けてくれてありがとう。