mysql - 创建视图并加入 2 个表查询
问题描述
我把自己绑在这个结上,所以希望有人能帮忙。
我需要创建一个视图表并将 2 个表连接在一起,但我只需要显示缺少数据的条目。
所以,我有一个表格列出了我拥有的无人机,包括制造商、序列号和购买日期,还有另一个表格列出了维护数据,包括每个设备收到的维护类型。该表还包括与第一个表类似的数据。
我需要从第一个表中提取设备数据并将其与维护表进行比较,并显示未接受特定类型维护的无人机。
这是我尝试过的
CREATE VIEW uncommissioned AS
SELECT DISTINCT
drone.manufacturer AS manufacture,
drone.serial,
drone.type,
drone.purchase_date,
maintenance.type AS maintenance
FROM drone
INNER JOIN maintenance ON drone.type = maintenance.type
WHERE maintenance.type = 'NULL';
但这给出了一张空桌子,关于我哪里出错了有什么建议吗?
解决方案
我认为你想要一个反LEFT JOIN
:
CREATE VIEW uncommissioned AS
SELECT DISTINCT
d.manufacturer AS manufacture,
d.serial,
d.type,
d.purchase_date,
d.type AS maintenance
FROM drone d
LEFT JOIN maintenance m ON d.type = m.type
WHERE m.type IS NULL;
笔记:
要检查无效性,您需要
IS NULL
构造(您的代码检查 litteral string'NULL'
):如果要显示维护类型,则需要从表中获取该信息,
drone
而不是从maintenance
表中获取
你也可以用一个NOT EXISTS
条件和一个相关的子查询来表达这个:
CREATE VIEW uncommissioned AS
SELECT DISTINCT
d.manufacturer AS manufacture,
d.serial,
d.type,
d.purchase_date,
d.type AS maintenance
FROM drone d
WHERE NOT EXISTS (SELECT 1 FROM maintenance m WHERE d.type = m.type)
推荐阅读
- node.js - 发送流作为 axios 请求的响应
- c# - C# Linq 表达式无法翻译
- c# - 在 Unity 上运行 Firebase 身份验证时出现错误 CS0012
- c# - 实体框架 Reverse.POCO.Generator 错误
- sorting - 如何使一个单元格根据另一个单元格移动?
- r - 如何获取在 r 中具有 NA 的列数?
- javascript - 使用 Https 进行集成,然后将库与 android 应用程序一起使用
- angularjs - 如何在AngularJS中组件的ng-option中加载值
- c# - 如何将用户设置值存储在数组中?
- javascript - ComponentDidMount 本地状态更新