好的,如果我有两个表的以下select语句:
SELECT shipments.ShipmentID, shipments.Name, shipments.Reference_No As [Reference Number], shipments.Qty, shipments.Status,
Shipment_Details.ISBN, Shipment_Details.Title, Shipment_Details.Author, Shipment_Details.Publisher,
FROM shipments, Shipment_Details
WHERE shipments.Shipment_No = Shipment_Details.Shipment_No AND shipments.Order_No = Shipment_Details.Order_No
AND ((Shipment_Details.Order_No=@Order_No))
如何使用名为ShippingSystemExport
的表格进行左联接,以及在ShippingSystemExport
中找到shipment.ShipmentID并且货运.Status(来自原始查询)未“已发货”然后将shipents.ShipmentID的值返回为“在运输部门扫描”
答案 0 :(得分:0)
如果我正确理解您的要求,以下查询应该完成工作。如果我错了,请纠正我。
SELECT 'Scanned in Shipping Department' AS ShipmentID, shipments.Name, shipments.Reference_No As [Reference Number], shipments.Qty, shipments.Status,
Shipment_Details.ISBN, Shipment_Details.Title, Shipment_Details.Author, Shipment_Details.Publisher,
FROM shipments
INNER JOIN Shipment_Details ON shipments.Shipment_No = Shipment_Details.Shipment_No AND shipments.Order_No = Shipment_Details.Order_No AND ((Shipment_Details.Order_No=@Order_No))
LEFT JOIN ShippingSystemExport ON ShippingSystemExport.ShipmentID = shipments.ShipmentID
WHERE shipments.Status <> 'Shipped'
但是,为什么“在运输部门扫描”作为ShipmentID返回?只是想知道......
答案 1 :(得分:0)
这可能就是你要找的东西:
SELECT a.ShipmentID, a.Name, a.Reference_No As [Reference Number], a.Qty, a.Status,
b.ISBN, b.Title, b.Author, b.Publisher, a.ShipmentID AS [Scanned in Shipping Department]
FROM shipments a
INNER JOIN Shipment_Details b
ON a.Shipment_No=b.Shipment_No AND a.Order_No = b.Order_No AND
INNER JOIN ShippingSystemExport c
ON a.ShipmentID=c.ShipmentID AND a.Status <> 'Shipped'
WHERE b.Order_No=@Order_No AND c.ShipmentID
我使用INNER JOIN
代替LEFT JOIN
,就像我在你的问题评论中所述。