フィールドIDとLogTimeを含むテーブル、ログから複数の単一値統計を取得することに興味があります。私はすべてのこのようUNIONと一緒にリンクされ、いくつかのSELECT *(ログからSELECT)文でこれを行うことができます。これはpCallBack_Dataとして定義された構造に返された値を置くCのSQLite:テーブルから複数の単一値の統計情報をより効率的に取得する
sql_stmt = sqlite3_mprintf(\
"SELECT * FROM (SELECT MIN(LogTime) FROM log) UNION ALL \
SELECT * FROM (SELECT MAX(LogTime) FROM log) UNION ALL \
SELECT * FROM (SELECT LogTime FROM log WHERE LogTime > %f ORDER BY logTime LIMIT 1) UNION ALL \
SELECT * FROM (SELECT COUNT(*) FROM log) UNION ALL \
SELECT * FROM (SELECT COUNT(*) FROM log WHERE LogTime > %f) UNION ALL \
SELECT * FROM (SELECT MIN(ID) FROM log) UNION ALL \
SELECT * FROM (SELECT MAX(ID) FROM log)", t1, t2);
sqlite3_exec(db, sql_stmt, f_CallBack, pCallBack_Data, &errmsg)
が、そこはやってのより効率的な方法でありますこの?多分要素をこのような単一のSELECTに結合するのでしょうか?
SELECT MIN(LogTime), MAX(LogTime), COUNT(*) from log
私はそれがUNION内の他の文は、単一の値を返す一列に3つの値を返すのでそれが動作しません知っています。
あなたは行ごとに単一の値を意味しますか? – Simon
すべての値を1行に戻すと何が問題になりますか? – JeremyP
はい、今は行ごとに1つの値を返しますが、1行にすべてを戻すことには何も問題ありません。私はコールバックでその行を解析する必要があります。私はどのように "WHERE LogTime>%f"の場合にすべての行を1行に入れるのかはわかりません。 –