我有 3 个与具有以下架构的父表相关的子表:
Product(maker, model, type)
PC(model, price, ...)
Laptop(model, price, ...)
Printer(model, price, ...)
该Product
表是 、 和 的PC
父Laptop
表Printer
。三个子表具有model
引用该Prodcut
表的外键。此外,PC、笔记本电脑和打印机没有相同的架构。
我想找出SELECT
某个制造商生产的所有产品(电脑、笔记本电脑和打印机)的型号和价格的最佳方法。
我是 SQL 新手,我的直觉现在告诉我应该将父表加入每个子表,过滤结果,然后执行联合。该查询似乎返回了正确的结果。
这是我的查询:
SELECT model, price FROM Product NATURAL JOIN PC WHERE maker = 'B' UNION
SELECT model, price FROM Product NATURAL JOIN Laptop WHERE maker = 'B' UNION
SELECT model, price FROM Product NATURAL JOIN Printer WHERE maker = 'B';
这是查询我的信息的有效方式吗?我觉得我输入的太多了,并且重复了很多相同的约束来达到我的结果。
我可以写一个更好的查询吗?
谢谢。