我需要在两种不同的情况下加入两个不同的表。在这种情况下,我必须用这两个解决方案解决我的问题;
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)或者我将为导入和导出创建两个不同的货件表,然后使用两个不同的查询来获取数据。
哪一个是最佳做法?
答案 0 :(得分:0)
我想我会用两个单独的查询来做这件事,但我也不讨厌这个解决方案。我认为这两者都是可行的。
顺便说一句,我认为你应该能够在没有CASE WHEN
的情况下解决这个问题,假设CompanyId在tblCustomers和tblSuppliers上都是唯一的。在这种情况下,你可以简单地做:
COALESCE(SP.SupplierName, C.CustomerName)