如何执行此SQL查询?

如何执行此SQL查询?,sql,Sql,我正在学习SQL,但在查询方面遇到了问题 我有以下表格: [笔记本电脑] 价格 模型 [pc] 价格 型号 速度 [打印机] 价格 型号 颜色 [产品] 型号 制造者 如何编写一个查询,返回制造商“a”生产的任何产品的型号和价格 我有问题,因为笔记本电脑、PC和打印机都有“型号”和“价格”,所以我如何根据“产品”表中制造商的条件选择它们?您可以将结果合并在一起 SELECT l.model, l.price FROM laptop l INNER JOIN pr

我正在学习SQL,但在查询方面遇到了问题

我有以下表格:

[笔记本电脑]
价格
模型

[pc]
价格
型号
速度

[打印机]
价格
型号
颜色

[产品]
型号
制造者

如何编写一个查询,返回制造商“a”生产的任何产品的型号和价格


我有问题,因为笔记本电脑、PC和打印机都有“型号”和“价格”,所以我如何根据“产品”表中制造商的条件选择它们?

您可以
将结果合并在一起

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'

您可以
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'

您不必在三个位置设置条件。只有在最后。

我认为您的表结构需要重建和规范化。。。使用正确的结构,您可以正确、高效地获取结果。
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

在第一个表中,使用公共属性存储您的所有产品,在第二个表中,您可以存储其他功能,如颜色、速度等。。。。等等,使用外键..

我认为您的表结构需要重建和规范化。。。使用正确的结构,您可以正确、高效地获取结果。 我认为您的桌子的合适结构是:

table: Product
  id
  name
  .
  .
  price

table: ProductFeature
   attribute
   value
   product_id

在第一个表中,使用公共属性存储您的所有产品,在第二个表中,您可以存储其他功能,如颜色、速度等。。。。等等,使用外键..

您可能需要考虑将打印机、pc和笔记本电脑表合并到一个公用表中。特别是公共字段(如价格、型号)。对于不常见的字段(如pc的速度和打印机的颜色),我非常喜欢使用参数化数据库设计。您可能需要考虑将打印机、pc和笔记本电脑表合并到一个通用表中。特别是公共字段(如价格、型号)。对于不常见的领域(如pc的速度和打印机的颜色),我非常喜欢使用参数化数据库设计。