我有以下四张表:
产品
| 标识符|产品|单位|数量|日期_S|
| - -|- -|- -|- -|- -|
| 一个|虎田55|九零四|三十二个|2022年6月8日|
| 2个|泰斯卡|560 EHRS公司|四十四岁|2022年6月8日|
| 三个|谢拉|九零五|五十六人|2022年6月8日|
| 四个|泰斯卡|七零一|十二个|2022年6月8日|
| 五个|泰斯卡|英国国民议会|四十五|2022年6月8日|
空气
| 标识符|单位|区域|分部|
| - -|- -|- -|- -|
| 十二个|560 EHRS公司|FMC公司|DNB公司|
| 十四|小行星428| FMO公司|数据传输模型|
通信
| 标识符|单位|区域|分部|
| - -|- -|- -|- -|
| 十二个|英国国民议会|FMC公司|动态密钥管理|
| 十四|苯甲酮|FMO公司|驱动端|
弗洛
| 标识符|单位|区域|分部|类型_设备|装备|生产利用率|佩里奥德维丹热|队列视频(_V)|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|
| 十四|九零四|FMC公司|DNBLS系统|马达和DG|柴油机|外壳|十五个|十二个|
| 二十三个|九零五|故障管理工程|DNBLS系统|马达和DG|柴油机|外壳|十五个|十二个|
| 二十二个|小行星906| FMO公司|DNBLS系统|马达和DG|柴油机|外壳|十五个|十二个|
| 二十一个|九一一|故障管理工程|DNBLS系统|马达和DG|柴油机|外壳|十五个|十二个|
| 五十五人|七零一|故障管理工程|DNBLS系统|马达和DG|柴油机|外壳|十五个|十二个|
预期输出
| 标识符|产品|单位|数量|日期_S|
| - -|- -|- -|- -|- -|
| 一个|虎田55|九零四|三十二个|2022年6月8日|
| 2个|泰斯卡|560 EHRS公司|四十四岁|2022年6月8日|
| 五个|泰斯卡|英国国民议会|四十五|2022年6月8日|
我已经尝试了这个查询:
SELECT *
FROM Produit,
Aéro
WHERE Aéro.Unit = Produit.Unit
AND Aéro.region = 'FMC'
UNION
SELECT *
FROM Produit,
Commun
WHERE Commun.Unit = Produit.Unit
AND Commun.region = 'FMC'
UNION
SELECT *
FROM Produit,
Flot
WHERE Flot.Unit = Produit.Unit
AND Flot.region = 'FMC'
当我只根据“Commun”和“Aéro”表选择“Produit”时,它运行得很好。如果我只根据“Flot”表选择“Produit”,它也运行得很好。但是当我根据其他三个表选择“Produit”时,它返回错误。
1条答案
按热度按时间ha5z0ras1#
如果你想提取所有产品,其单位与区域“FMC”相关,你可以从三个过滤表(“Aéro",“Commun”和“Flot”)中对单位应用
UNION ALL
,然后选择所有那些允许该单位在相应的“Produit.Unit"中的产品。检查演示here。
注意:
UNION ALL
比UNION
更有效率,因为它可避免大量的汇总。请检查here的差异。