我正在學習SQL,我有一個查詢的麻煩。如何執行此SQL查詢?
我有以下表格:
[筆記本]
價格
模型[PC]
價格
模式
速度[打印]
價格
模式
顏色[產品]
模式
壺
我如何編寫一個查詢將返回這是由製造商製造的任何產品的型號和價格「A」 ?
我有,因爲筆記本電腦,PC,和打印機的問題都有一個「模式」和「價格」,讓我怎麼選擇他們根據他們的製造商的「產品」表的條件?
我正在學習SQL,我有一個查詢的麻煩。如何執行此SQL查詢?
我有以下表格:
[筆記本]
價格
模型[PC]
價格
模式
速度[打印]
價格
模式
顏色[產品]
模式
壺
我如何編寫一個查詢將返回這是由製造商製造的任何產品的型號和價格「A」 ?
我有,因爲筆記本電腦,PC,和打印機的問題都有一個「模式」和「價格」,讓我怎麼選擇他們根據他們的製造商的「產品」表的條件?
SELECT * FROM
(
SELECT model,price FROM laptop
UNION ALL
SELECT model,price FROM pc
UNION ALL
SELECT model,price FROM printer
) all_items
INNER JOIN product p ON all_items.model = p.model
WHERE p.maker = 'A'
你不必把條件在三個地方。只在最後。
你可以UNION
在一起的結果
SELECT
l.model,
l.price
FROM
laptop l
INNER JOIN
product p
ON
l.model = p.model
WHERE
p.maker = 'A'
UNION ALL
SELECT
pc.model,
pc.price
FROM
pc pc
INNER JOIN
product p
ON
l.model = p.model
WHERE
p.maker = 'A'
UNION ALL
SELECT
pr.model,
pr.price
FROM
printer pr
INNER JOIN
product p
ON
l.model = p.model
WHERE
p.maker = 'A'
SELECT T.model, T.price
FROM (SELECT model, price FROM laptop
UNION ALL
SELECT model, price FROM pc
UNION ALL
SELECT model, price FROM printer) T
JOIN product p ON p.model = T.model
WHERE p.maker = 'A'
我覺得你的表結構需要重建和規範化...右結構,你可以獲取正確和效率的結果。 我覺得你的表的正確結構是:
table: Product
id
name
.
.
price
table: ProductFeature
attribute
value
product_id
第一表格店都是你的產品有共同屬性,並在第二個表,你可以存儲其他功能如顏色,速度,...等等,使用forign鍵..
您可能要考慮一下你的組合打印機,PC和筆記本桌,爲一個共同的表。特別是常見的領域(如價格和型號)。對於不常見的領域(比如pc的速度和打印機的顏色),我喜歡使用參數化數據庫設計。 – 2009-09-23 16:46:49