繁体   English   中英

涉及两个表的SQL语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM