情報に応じて、sqliteデータベースに異なるテーブルにデータを送信するWebアプリケーションがあります。 cownumberとTS [timestamp]に基づいて複数のテーブルをまとめて表示するようにしたいと思います(テーブルには更新がないので、同じcownumberを変更すると新しいタイムスタンプの新しいエントリとしてフルレコードが送信されます)。 AJAX呼び出しは、TSが正確に一般的にアップ同期しませんので、彼らはここで接続IDと複数のテーブルを結合するビューを作成する丸めを必要とする
に応じて、オフ5-20秒とすることができ、テーブルでテーブルを作っている3つのテーブル
+----master_animal-----+
+----------------------------------------------------+
| cownumber | height | weight | ts |
+-----------+----------+--------+--------------------+
| 1 | 150 | ... | 2017-12-01 12:28:00|
| 2 | 170 | ... | 2017-12-03 17:16:00|
| 3 | 60 | ... | 2017-12-03 08:09:00|
| 4 | 109 | ... | 2017-12-04 23:23:00|
+----animal_inventory-----+
+-------------------------------------------------------------+
| cownumber | brandlocation| dateacquired| ts |
+-----------+--------------+-------------+--------------------+
| 1 | ... | ... | 2017-12-01 12:28:50|
| 2 | ... | ... | 2017-12-03 17:16:30|
| 3 | ... | ... | 2017-12-03 08:09:12|
| 4 | ... | ... | 2017-12-04 23:23:23|
+----experiment-----+
+-------------------------------------------------------------+
| cownumber | ageatwean | birthweight | ts |
+-----------+--------------+-------------+--------------------+
| 1 | ... | ... | 2017-12-01 12:28:20|
| 2 | ... | ... | 2017-12-03 17:16:41|
| 3 | ... | ... | 2017-12-03 08:09:24|
| 4 | ... | ... | 2017-12-04 23:23:11|
ビューのサンプルです私は
CREATE VIEW testing
AS SELECT a.height,a.weight,a.cownumber,
b.brandlocation,b.dateacquired,
c.ageatwean,c.birthweight
FROM master_animal a, animal_inventory b, experiment c
WHERE a.cownumber=b.cownumber
AND ROUND(a.ts/10000) = ROUND(b.ts/10000)
AND a.cownumber=c.cownumber
AND ROUND(a.ts/10000) = ROUND(c.ts/10000);
に私は私が期待していた何
Select * from testing where cownumber = 1;
を書いたクエリを書きました戻って取得することがある限り、すべての相関レコードが互いに数秒以内であったとしてcownumber 941のために1行が存在します
+----testing-----+
+----------------------------------------------------+
| cownumber | height | weight | brandlocation| dateacquired | ageatwean |birthweight |
+-----------+--------+--------+--------------+--------------+-----------+------------+
| 941 | 0 | ... | ... | ... | ... | .. |
ました。私が10000以下で分割する必要があるかどうかは確かではありません。同じレコードは、互いに50秒以上離れてはいけません。 50秒以上離れたものは新しい記録とみなすべきです。
私がこのcownumberのレコードが1つしかない場所でこれをテストすると、正常に動作します。しかし、私は各テーブルからいくつかの情報を変更すると言うことができます。私は新しい高さ、新しいブランドロケーションを提供します。
2行を取得する代わりに。最初の行は最初のデータエントリであり、2行目は変更された値を持つ同じcownumberを示していますが、部分的に変更して8行戻します。
height|weight|cownumber|brandlocation|dateacquired|ageatwean|birthweight|
0.0|0.0|941|0|0|0.0|0
0.0|0.0|941|0|0|0.0|0
0.0|0.0|941|Left Hip|0|0.0|0
0.0|0.0|941|Left Hip|0|0.0|0
50.0|0.0|941|0|0|0.0|0
50.0|0.0|941|0|0|0.0|0
50.0|0.0|941|Left Hip|0|0.0|0
50.0|0.0|941|Left Hip|0|0.0|0
は、私は問題が私のwhere句であると仮定し、私はそれ
Iはあなたの牛に繰り返しは見られません。インサートの更新はどこにありますか? –
挿入はクライアント側のajax POSTによって行われます –