列表展示全区重点污染源设备运行情况及设备运转率,展示信息包括点位名称、设备名称、故障时长、生产时长及设备运转率,支持按照类型、点位、设备名称等进行查询, 这个查询怎么写
时间: 2023-08-21 09:01:46 浏览: 88
针对这个查询,可以采用以下SQL语句:
```
SELECT
t1.POINTNAME,
t2.DEVICE_NAME,
t2.FAULT_DURATION,
t2.PRODUCTION_DURATION,
t2.OPERATING_RATE
FROM
POINT_TABLE t1
INNER JOIN DEVICE_TABLE t2 ON t1.POINTID = t2.POINTID
WHERE
t2.DEVICE_TYPE = ?
AND t1.POINTNAME LIKE ?
AND t2.DEVICE_NAME LIKE ?;
```
其中,POINT_TABLE和DEVICE_TABLE分别为点位表和设备表,它们之间通过POINTID关联。具体说明如下:
- POINT_TABLE:记录了所有点位的信息,包括点位ID、点位名称等;
- DEVICE_TABLE:记录了所有设备的信息,包括设备ID、设备名称、故障时长、生产时长、设备运转率等,以及与点位表的关联信息POINTID。
在SQL语句中,使用INNER JOIN将两张表的信息关联起来,然后通过WHERE条件进行过滤。具体说明如下:
- t2.DEVICE_TYPE = ?:按照设备类型进行过滤;
- t1.POINTNAME LIKE ?:按照点位名称进行模糊查询;
- t2.DEVICE_NAME LIKE ?:按照设备名称进行模糊查询。
在Java代码中,可以使用PreparedStatement等方式进行SQL语句拼接,具体示例代码如下:
```
String sql = "SELECT t1.POINTNAME, t2.DEVICE_NAME, t2.FAULT_DURATION, t2.PRODUCTION_DURATION, t2.OPERATING_RATE " +
"FROM POINT_TABLE t1 INNER JOIN DEVICE_TABLE t2 ON t1.POINTID = t2.POINTID WHERE t2.DEVICE_TYPE = ? " +
"AND t1.POINTNAME LIKE ? AND t2.DEVICE_NAME LIKE ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, deviceType);
ps.setString(2, "%" + pointName + "%");
ps.setString(3, "%" + deviceName + "%");
ResultSet rs = ps.executeQuery();
```
其中,deviceType、pointName、deviceName分别为设备类型、点位名称、设备名称的查询条件,通过setString方法设置到PreparedStatement对象中,然后执行SQL查询,并返回ResultSet结果集。