[英]SQL statement involving two tables
我有两个表,sensor和sensor_desc。 我想从上次插入sensor_id的两个表中检索sensor.date和sensor_desc.location。
我已经试过了这行不通的代码。
cur = con.cursor()
cur.execute("Select sensor_id from sensor order by date desc limit 1")
con.commit()
last= cur.fetchall()
print '%s' %last
cur1= con.cursor()
cur.execute("Select sensor.date, sensor_desc.location from sensor, sensor_desc where sensor.sensor_id= %s AND sensor_desc.sensor_id=%s",(last, last))
con.commit()
lastseen = cur1.fetchall()
print '%s'%lastseen
传感器
+-----------+---------------------+-------+
| sensor_id | date | value |
+-----------+---------------------+-------+
| 12345 | 2015-08-17 10:16:41 | NULL |
| 12345 | 2015-08-17 10:17:29 | NULL |
| 12345 | 2015-08-17 10:18:06 | NULL |
| 12345 | 2015-08-17 13:28:55 | 1 |
| 12345 | 2015-08-17 13:29:49 | 1 |
+-----------+---------------------+-------+
sensor_desc
+-----------+--------------------+-------------+
| sensor_id | description | location |
+-----------+--------------------+-------------+
| 12341 | Motion Sensor | Kitchen |
| 12342 | Motion Sensor | Toilet |
| 12343 | Motion Sensor | Living Room |
| 12344 | Motion Sensor | BedRoom |
| 12345 | Panic Button | NULL |
| 12346 | Temperature Sensor | NULL |
| 12347 | CO2 Sensor | NULL |
+-----------+--------------------+-------------+
我认为结合您的两个查询可以得到:
select sensor.date, sensor_desc.location
from sensor, sensor_desc
where sensor.sensor_id = sensor_desc.sensor_id
order by sensor.date desc
limit 1
这里的很多人都希望您使用inner join
语法,但是我想强调一下您已经很接近可行的东西。
您应运行的SQL语句应在两个表之间连接,按日期排序,然后仅获取第一条记录。
我在这里使用INNER JOIN
只是因为您然后可以以这种方式忽略WHERE
子句(我觉得它更具可读性)。
SELECT sensor.date, sensor_desc.location
FROM sensor
INNER JOIN sensor_desc ON sensor.sensor_id = sensor_desc.sensor_id
ORDER BY sensor.date DESC
LIMIT 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.