簡體   English   中英

如何執行此SQL查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM