【发布时间】:2016-07-16 19:03:05
【问题描述】:
我有 5 个不同的表格 来获取数据。但首先我使用 3 个表进行测试。使用 LEFT JOIN 和 UNION。到目前为止,这是我一直在使用的代码。
SELECT sts.TransferDate as 'Transaction Date', sts.TransNumber as 'Document Number', orderset_details.Quantity as 'Quantity', '' as 'Po Number', '' as 'Sales Invoice', orderset_details.Cost as 'Cost', orderset_details.SerialNumber as 'Serial Number', orderset_details.LotNumber as 'Lot Number', location.Location as 'Location'
FROM orderset_details
LEFT JOIN sts ON sts.OrdersetId = orderset_details.OrdersetId
LEFT JOIN location ON location.LocationId = sts.LocationIdTo
WHERE orderset_details.ItemId = '3071'
UNION
SELECT drs.OrderDate as 'Transaction Date', drs.TransNumber as 'Document Number', orderset_details.Quantity, drs.PONumber as 'Po Number', '' as 'Sales Invoice', orderset_details.Cost as 'Cost', orderset_details.SerialNumber as 'Serial Number', orderset_details.LotNumber as 'Lot Number', suppliers.Supplier as 'Location'
FROM orderset_details
LEFT JOIN drs ON drs.OrdersetId = orderset_details.OrdersetId
LEFT JOIN suppliers ON suppliers.SupplierId = drs.SupplierId
WHERE orderset_details.ItemId = '3071'
UNION
SELECT stockadjustment.TransactionDate as 'Transaction Date', stockadjustment.TransactionId as 'Document Number', orderset_details.Quantity as 'Quantity', '' as 'Po Number', '' as 'Sales Invoice', orderset_details.Cost as 'Cost', orderset_details.SerialNumber as 'Serial Number', orderset_details.LotNumber as 'Lot Number', location.Location as 'Location'
FROM orderset_details
LEFT JOIN stockadjustment ON stockadjustment.OrdersetId = orderset_details.OrdersetId
LEFT JOIN location ON location.LocationId = stockadjustment.LocationId
WHERE orderset_details.ItemId = '3071'
Group By orderset_details.ItemId
输出应该只有 1 并且是最后一行。我的问题是,当我的 1 或 2 个查询没有任何意义时,它会重复一些不正确的列。
如何只显示与特定 ItemId 相等的数据?我的查询有什么问题?
【问题讨论】: