[英]How can I do this SQL Query?
我正在學習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
在第一個表中存儲具有共同屬性的所有產品,在第二個表中,您可以使用外鍵存儲其他功能,例如顏色,速度,...等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.