簡體   English   中英

使用來自多個表的值填充單個列

[英]Populate a single column with values from multiple table

我有三個表如下:

訂單表

| OrderID  | Type      | ItemID |
+----------+-----------+---------+
| 0001     | Car       | A001    |
| 0002     | Motorbike | A001    |

Car_Table

| ItemID  | ItemDesc   |
+---------+------------+
| A001    | Honda Jazz |

Motorbike_Table

| ItemID  | ItemDesc   |
+---------+------------+
| A001    | Yamaha F1Z |

我需要通過添加一個名為ItemDesc的列將最后兩個表合並到第一個表中。

有什么方法可以根據Type列的值進行查詢以從Car_TableMotorbike_Table填充ItemDesc列? 回答:

SELECT Order_Table.OrderID, Order_Table.Type, Order_Table.ItemID,
IIF(Order_Tbl.Type = "Car", Car_Tbl.ItemDesc, Motorbike_Tbl.ItemDesc) AS ItemDesc
FROM Order_Table 
LEFT JOIN Car_Table ON Order_Table.ItemID = Car_Table.ItemID
LEFT JOIN Motorbike_Table ON Order_Table.ItemID = Motorbike_Table.ItemID;

謝謝!

您可以使用條件聚合來獲得所需的結果,當Type = Car時從Car_table中選擇一個值,當 Type Type = Motorbike Motorbike_table時從 Motorbike_table 中選擇一個值:

SELECT Order_Table.OrderID, Order_Table.Type, Order_Table.ItemID,
IIF(Order_Tbl.Type = "Car", Car_Tbl.ItemDesc, Motorbike_Tbl.ItemDesc) AS ItemDesc
FROM Order_Table 
LEFT JOIN Car_Table ON Order_Table.ItemID = Car_Table.ItemID
LEFT JOIN Motorbike_Table ON Order_Table.ItemID = Motorbike_Table.ItemID;

Output:

OrderID     Type        ItemID  ItemDesc
1           Car         A001    Honda Jazz
2           Motorbike   A001    Yamaha F1Z

dbfiddle 上的演示

您可以使用UNION ALL

SELECT o.OrderID, o.Type, o.ItemID, c.ItemDesc
FROM Order_Table o INNER JOIN
     Car_Table c
     ON c.ItemID = o.ItemID
WHERE o.Type = 'Car'
UNION ALL
SELECT o.OrderID, o.Type, o.ItemID, m.ItemDesc
FROM Order_Table o INNER JOIN
     Motorbike_Table m
     ON c.ItemID = m.ItemID
WHERE o.Type = 'Motorbike';

MS Access 對連接很挑剔,所以我認為以下方法行不通:

SELECT o.OrderID, o.Type, o.ItemID,
       NZ(c.ItemDesc, m.ItemDesc) AS ItemDesc
FROM (Order_Table o LEFT JOIN
      Car_Table c
      ON c.ItemID = o.ItemID AND o.Type = 'Car'
     ) LEFT JOIN
     Motorbike_Table m
     ON m.ItemID = o.ItemID AND o.type = 'Motorbike'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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