我有相關的父表與下面的架構3個表:MySQL的自然連接3個相關的父表與父表contraint表
Product(maker, model, type)
PC(model, price, ...)
Laptop(model, price, ...)
Printer(model, price, ...)
的Product
表是父表PC
,Laptop
和Printer
。 三個子表具有引用Prodcut
表的外鍵model
。 此外,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';
這是爲了查詢我信息的有效方法是什麼?我覺得我輸入的方式太多,並重復許多相同的約束條件來實現我的結果。
有沒有更好的查詢,我可以寫?
謝謝。
我試過了,它給了我錯誤: – jor 2014-09-25 09:06:46
@JulioReyes什麼錯誤? – artm 2014-09-25 09:11:09
@JulioReyes嘗試編輯1 – artm 2014-09-25 09:16:48