我正在用mssql编写一个查询,并尝试在两个表之间过滤数据,然后用第三个表中的数据进一步细化它。
有三张table。一个是主表(tbl1),次表列出有缺陷的产品(tbl2)。它们将根据一列中的状态插入此表中。第三个表保存装运数据(tbl3)。有些情况下,有缺陷的产品已包括在装运中。
此查询提供具有缺陷的所有项的列表:
SELECT tbl1.ProductSerialNumber, tbl1.ProductSize, tbl1.ProductColor, tbl2.NCRNumber, tbl1.ReasonFailure, tbl1.ProductStatus, tbl2.Notes, tbl1.Date_Time
FROM tbl1 INNER JOIN
tbl2 ON tbl1.ProductSerialNumber = tbl2.ProductSerialNumber
WHERE (tbl1.ProductStatus LIKE '%NCR' OR
tbl1.ProductStatus IS NULL) AND (tbl2.NCRNumber IS NOT NULL)
ORDER BY tbl1.Date_Time DESC
我面临的问题是使用第三个表来过滤更多的结果。第三个表中的工单包含所有装运的编号。如果发货的工单为0(零),我不想在结果中显示它,应该每隔一个工单编号显示一次。目标是筛选出缺少缺陷且已分配给工作订单0(零)的产品。
我试过了
SELECT tbl1.ProductSerialNumber, tbl1.ProductSize, tbl1.ProductColor, tbl2.NCRNumber, tbl1.ReasonFailure, tbl1.ProductStatus, tbl2.Notes, tbl1.Date_Time,
tbl3.WorkOrder
FROM tbl1 INNER JOIN
tbl2 ON tbl1.ProductSerialNumber = tbl2.ProductSerialNumber INNER JOIN
tbl3 ON tbl1.ProductSerialNumber = tbl3.ProductSerialNumber
WHERE (tbl1.ProductStatus LIKE '%NCR' OR
tbl1.ProductStatus IS NULL) AND (tbl2.NCRNumber IS NOT NULL) AND (tbl3.WorkOrder <> N'0')
ORDER BY tbl1.Date_Time DESC
2条答案
按热度按时间bvn4nwqk1#
我会用一个不在的:
wgx48brx2#
此查询以较少的执行时间提供输出time:-