我正在学习SQL,但我遇到了查询问题。
我有以下表格:
[笔记本电脑]
价格
模特[pc]
价格
模型
速度[打印机]
价格
模型
颜色[产品]
模型
机
如何编写一个能够返回由制造商“A”制作的任何产品的型号和价格的查询?
我遇到问题因为笔记本电脑,个人电脑和打印机都有“型号”和“价格”,所以如何根据制造商在“产品”表中的条件选择它们?
答案 0 :(得分:3)
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'
您不必将条件放在三个地方。只在最后。
答案 1 :(得分:1)
您可以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'
答案 2 :(得分:1)
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'
答案 3 :(得分:0)
我认为你的表结构需要重建和规范化...使用正确的结构你可以正确获取结果和效率。 我认为你桌子的正确结构是:
table: Product
id
name
.
.
price
table: ProductFeature
attribute
value
product_id
在第一个表中存储所有具有公共属性的产品,在第二个表中,您可以使用forign键存储其他功能,如颜色,速度等....