정보에 따라 다른 테이블로 sqlite 데이터베이스로 데이터를 보내는 웹 응용 프로그램이 있습니다. Cownumber와 TS [timestamp]를 기반으로 여러 테이블을 병합하는보기를 만들고 싶습니다. (내 테이블에는 업데이트가 없으므로 동일한 cownumber를 변경하면 전체 레코드가 새 타임 스탬프가있는 새 항목으로 보내집니다). 아약스 호출이 TS 정확히까지 동기화하지 않도록 일반적으로 그들이 연결 여기ID와 타임 스탬프에서 다중 테이블을 조인하는 뷰 만들기
에 따라 해제 5~20초 될 수 있습니다 테이블로 테이블을 만든 세 개의 테이블
+----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)에 대해 하나 개의 행이 될 것입니다 경우
+----testing-----+
+----------------------------------------------------+
| cownumber | height | weight | brandlocation| dateacquired | ageatwean |birthweight |
+-----------+--------+--------+--------------+--------------+-----------+------------+
| 941 | 0 | ... | ... | ... | ... | .. |
하였다. 10000 이하로 나눌 필요가 있는지 정확히 알지 못합니다. 동일한 기록은 서로 50 초 이상 떨어져 있으면 안됩니다. 50 초 이상 간격을 두어 새로운 기록으로 간주해야합니다.
해당 cownumber에 대한 레코드가 하나 밖에없는 곳에서 테스트 할 때 정상적으로 작동합니다. 그러나 각 테이블에서 일부 정보를 변경한다고 가정 해 보겠습니다. 새로운 높이, 새로운 브랜드 위치를 제공합니다.
두 행을받는 대신. 첫 번째 행은 초기 데이터 항목이고 두 번째 행은 변경된 값과 동일한 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에 의해 수행됩니다 –