我需要在mySQL中生成以下查询结果:
lat1 lng1 timestamp1
canid1 diff_timestamp1
canid2 diff_timestamp1
canid3 diff_timestamp1
...... .........
lat2 lng2 timestamp2
canid1 diff_timestamp2
canid2 diff_timestamp2
canid3 diff_timestamp2
...... .........
例如:
canid lat lng gps.timestamp difference_to_gps_timestamp
NULL +52.220961 +9.416273 550 NULL
0x90FE6FFE NULL NULL NULL 50
0x8CF004FE NULL NULL NULL 60
0x90FE6FFE NULL NULL NULL 90
NULL +52.220960 +9.416273 1550 NULL
0x8CF004FE NULL NULL NULL 50
0x8CF004FE NULL NULL NULL 50
这甚至可能吗?也许加入variantes?
我从两个表格获得的数据gps和can。它们使用gps / can.logid = log.id连接到表日志。 问题是,每个人都可以'条目有它自己的时间戳与' gps'时间戳所以每个人都可以'参赛作品应指向最近的' gps'使用时间戳的位置。
CAN-数据:
id canid logid data timestamp
1 0x90FE6FFE 1 000000C533BB87FF 600
2 0x8CF004FE 1 007D7D9C6300F07D 610
3 0x90FE6FFE 1 000000C5E6C683FF1 640
4 0x8CF004FE 1 007D7DF03A00F07D1 1500
5 0x90FE6FFE 1 000000C59AD283FF1 1600
id:主键logid:来自日志的外键
GPS:
id lat lng logid timestamp
1 52.220961 9.416273 1 562
2 52.220960 9.416273 1 1550
3 52.220960 9.416273 1 2551
4 52.220960 9.416273 1 3546
5 52.220959 9.416274 1 4548
LOG:
id logdate logtime vehicleid
1 2017-03-22 10:56:54 1
2 2017-03-22 11:32:43 1
我使用以下选项从gps获取最接近can-entry的时间戳。 3000表示可以进入的时间戳。但我不知道如何更改它以获得我想要的结果。
SELECT timestamp, ABS( timestamp - 3000 ) AS distance FROM (
(
SELECT timestamp
FROM `gps`
WHERE timestamp >=3000
ORDER BY timestamp
LIMIT 6
) UNION ALL (
SELECT timestamp
FROM `gps`
WHERE timestamp < 3000
ORDER BY timestamp DESC
LIMIT 6
)
) AS n
ORDER BY distance
LIMIT 1
我会很高兴你的帮助