连接表格的最佳做法

时间:2014-04-12 09:26:06

标签: sql join case

我需要在两种不同的情况下加入两个不同的表。在这种情况下,我必须用这两个解决方案解决我的问题;

1)我将创建一个语句(S.ShipmentType),用于连接,如下所示:

SELECT  S.*, P.*

,CASE
    WHEN S.ShipmentType = 'import' THEN SP.SupplierName
    WHEN S.ShipmentType = 'export' THEN C.CustomerName
END AS ShipmentDesination

FROM            tblShippments   S 
INNER JOIN      tblProducts     P   ON S.productId = P.productID  
LEFT OUTER JOIN tblCustomers    C   ON S.companyId = C.customerId AND S.ShipmentType = 'export'
LEFT OUTER JOIN tblSuppliers    SP  ON S.companyId = SP.supplierId AND S.ShipmentType = 'import'

2)或者我将为导入和导出创建两个不同的货件表,然后使用两个不同的查询来获取数据。

哪一个是最佳做法?

1 个答案:

答案 0 :(得分:0)

我想我会用两个单独的查询来做这件事,但我也不讨厌这个解决方案。我认为这两者都是可行的。

顺便说一句,我认为你应该能够在没有CASE WHEN的情况下解决这个问题,假设CompanyId在tblCustomers和tblSuppliers上都是唯一的。在这种情况下,你可以简单地做:

COALESCE(SP.SupplierName, C.CustomerName)