最初的回答:
我可以帮您翻译中文。以下是润色后的翻译结果:
我想将每个维护需求与其相关设备匹配。每个需求适用于特定的制造商、型号、设备、设施或其适用范围内的任何组合。
我已经创建了一个表来管理这些关系,如下所示:
根据上表,要求1仅适用于设备类型为“1”的任何设备。 要求2适用于所有制造商为“2”且建筑物为“2”的设备。 要求3适用于所有建筑物为“1”或“3”的设备。 要求4适用于所有mfg_id为“1”、dev_id为“3”且建筑物为“1”的设备。
我正在尝试编写一个查询,以便根据maint_equip中定义的关系,给出所有设备ID及其相关频率要求的列表。遇到的问题是如何处理多个连接。我已经尝试过:
我有一个维护需求表,其中包含每月执行的相关频率。
维护
+----------+------+
| maint_id | freq |
+----------+------+
| 1 | 6 |
| 2 | 12 |
| 3 | 24 |
| 4 | 3 |
+----------+------+
我可以帮您翻译中文。以下是润色后的翻译结果:
我还有一张关于设备的表格,其中包含制造商、型号、设备类型和建筑物等数据。
设备
+----------+--------+--------+--------+---------+
| equip_id | mfg_id | mod_id | dev_id | bldg_id |
+----------+--------+--------+--------+---------+
| 1 | 1 | 1 | 3 | 1 |
| 2 | 1 | 2 | 3 | 1 |
| 3 | 2 | 3 | 1 | 2 |
| 4 | 2 | 3 | 1 | 3 |
+----------+--------+--------+--------+---------+
我想将每个维护需求与其相关设备匹配。每个需求适用于特定的制造商、型号、设备、设施或其适用范围内的任何组合。
我已经创建了一个表来管理这些关系,如下所示:
maint_equip
"Original Answer"翻译成中文为“最初的回答”。+----------------+----------+--------+--------+--------+---------+
| maint_equip_id | maint_id | mfg_id | mod_id | dev_id | bldg_id |
+----------------+----------+--------+--------+--------+---------+
| 1 | 1 | NULL | NULL | 1 | NULL |
| 2 | 2 | 2 | NULL | NULL | 2 |
| 3 | 3 | NULL | NULL | NULL | 1 |
| 4 | 3 | NULL | NULL | NULL | 3 |
| 5 | 4 | 1 | NULL | 3 | 1 |
+----------------+----------+--------+--------+--------+---------+
根据上表,要求1仅适用于设备类型为“1”的任何设备。 要求2适用于所有制造商为“2”且建筑物为“2”的设备。 要求3适用于所有建筑物为“1”或“3”的设备。 要求4适用于所有mfg_id为“1”、dev_id为“3”且建筑物为“1”的设备。
我正在尝试编写一个查询,以便根据maint_equip中定义的关系,给出所有设备ID及其相关频率要求的列表。遇到的问题是如何处理多个连接。我已经尝试过:
SELECT equip.equip_id, maint.freq
FROM equip INNER JOIN
maint_equip ON equip.mfg_id = maint_equip.mfg_id
OR equip.mod_id = maint_equip.mod_id
OR equip.dev_id = maint_equip.dev_id
OR equip.bldg_id = maint_equip.bldg_id INNER JOIN
maint ON maint_equip.maint_id = maint.maint_id
但是,使用OR分隔多个连接意味着它不考虑每行的AND条件。例如,maint_id 2只应适用于equip_id 3,但返回了ids 3和4。如果使用AND,则不返回任何行,因为没有列具有所有值。
是否可能以这种方式加入表以实现此目的,或者还有其他方法来构造数据?
翻译成简单易懂的语言:
使用OR分隔多个连接可能导致无法考虑到每一行的AND条件。比如说,maint_id为2的应该只对equip_id为3的适用,但是返回了id为3和4的数据。如果使用AND,则没有返回数据,因为没有一行数据同时拥有所有的列。
是否有可能以其他方式连接表格或者再构造一些数据结构呢?
最初的回答: