Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 复杂双表联接_Mysql_Sql - Fatal编程技术网

Mysql 复杂双表联接

Mysql 复杂双表联接,mysql,sql,Mysql,Sql,尝试创建一个结果集,该结果集的每个Sensorrule行最多有一行,其中Sensorrule.sensorid存在于Sensordata.sensorid中,其中日期(Sensor.messagedate)=CURDATE()时间(Sensordata.messagedate)=>Sensorrule.fromtime和时间(Sensordata.messagedate)=>Sensorrule.totime Sensorrule +-------------+--------------+--

尝试创建一个结果集,该结果集的每个
Sensorrule
行最多有一行,其中
Sensorrule.sensorid
存在于
Sensordata.sensorid
中,其中
日期(Sensor.messagedate)=CURDATE()
时间(Sensordata.messagedate)=>Sensorrule.fromtime和
时间(Sensordata.messagedate)=>Sensorrule.totime

Sensorrule
+-------------+--------------+------------+-------+--------------+
| sensorid    | fromtime     | totime     | msg   | name         |
+-------------+--------------+------------+-------+--------------+
| 27460       | 5:00         | 11:00      | Work  | Bob          |
| 27461       | 4:00         | 15:00      | Not   | Susan        |
| 27460       | 7:30         | 12:00      | Max   | Rick         |
+-------------+--------------+------------+-------+--------------|

Sensordata
+---------+---------------------+---------------+----------+
| Room    | messagedate         | transactionid |  sensorid|
+---------+---------------------+---------------+----------+
| Bedroom | 2014-05-30 07:48:14 | 332243181     | 27460    |
| Bedroom | 2014-05-30 05:48:14 | 332243182     | 27464    |
| Bedroom | 2014-05-22 07:36:21 | 332243183     | 27460    |
| Bedroom | 2014-05-22 09:23:21 | 332656534     | 27464    |
| Bedroom | 2014-05-21 06:34:22 | 332243185     | 27461    |
| Bedroom | 2014-05-20 06:15:06 | 332243187     | 27460    |
| Bedroom | 2014-05-20 07:40:34 | 332243172     | 27465    |
| Bedroom | 2014-05-19 09:27:56 | 332243191     | 27461    |
| Bedroom | 2014-05-18 06:34:08 | 332243101     | 27460    |
+---------+---------------------+---------------+----------+
如果
Sensordata
中没有当前日期(
messagedate
)在
fromtime
totime
之间的
messagedate
时间的行,则结果集可能小于
Sensorrule
中的行数

Sensorrule
+-------------+--------------+------------+-------+--------------+
| sensorid    | fromtime     | totime     | msg   | name         |
+-------------+--------------+------------+-------+--------------+
| 27460       | 5:00         | 11:00      | Work  | Bob          |
| 27461       | 4:00         | 15:00      | Not   | Susan        |
| 27460       | 7:30         | 12:00      | Max   | Rick         |
+-------------+--------------+------------+-------+--------------|

Sensordata
+---------+---------------------+---------------+----------+
| Room    | messagedate         | transactionid |  sensorid|
+---------+---------------------+---------------+----------+
| Bedroom | 2014-05-30 07:48:14 | 332243181     | 27460    |
| Bedroom | 2014-05-30 05:48:14 | 332243182     | 27464    |
| Bedroom | 2014-05-22 07:36:21 | 332243183     | 27460    |
| Bedroom | 2014-05-22 09:23:21 | 332656534     | 27464    |
| Bedroom | 2014-05-21 06:34:22 | 332243185     | 27461    |
| Bedroom | 2014-05-20 06:15:06 | 332243187     | 27460    |
| Bedroom | 2014-05-20 07:40:34 | 332243172     | 27465    |
| Bedroom | 2014-05-19 09:27:56 | 332243191     | 27461    |
| Bedroom | 2014-05-18 06:34:08 | 332243101     | 27460    |
+---------+---------------------+---------------+----------+
希望结果集看起来像:

Sensorid    msg     name    
24760       Work    Bob 
27461       Not     Susan
注:上述数据集并未具体产生上述结果

从传感器规则s、传感器数据d中选择不同的s.sensorid、s.msg、s.name
select distinct s.sensorid,s.msg,s.name from sensorrule s,sensordata d
where s.sensorid=d.sensorid and 
time(d.messagedate)>s.fromtime and 
time(d.messagedate)<s.totime;
其中s.sensorid=d.sensorid,且 时间(d.messagedate)>s.fromtime和
时间(d.messagedate)请显示表格结构并告诉我们您想要实现什么?对不起。当我按enter键时,编辑错误。您想要在结果集中显示什么?选择条件是什么?如果Sensorrule中每一行的sensorid在Sensordata表的一行或多行中找到,并且具有今天的日期(messagedate),并且messagedate中的时间介于Sensorrule的fromtime和totime之间,则输出Sensorrule的sensorid、MSG和name。如果Sensordata中至少存在一次这种情况,我只想看到Sensorrule中每行的一行输出(或无输出)。(MYSQL)错误1271(HY000):操作“>”的排序规则的非法混合在我以前的尝试中也收到了此错误消息(因此,此处请求帮助)问题在于您的表排序规则类型。请检查此项。我想我发现了问题。将s.fromtime和s.totime更改为显式日期时间格式:例如,STR_to_DATE(s.totime,“%H:%i”)允许查询工作。然而,我得到了很多结果(Sensordata中的每一行对应一个结果,而不是Sensorrule中的每一行对应一个结果。这不是只返回一个结果,而不是Sensorrule中每一行对应一个可能的结果吗?