[英]How to use Left Join in subquery SQL Server?
我正在嘗試在 SQL Server 的子查詢中使用左連接。 我的查詢對我來說很好,但它給出了語法錯誤。
這是我的查詢:
(
SELECT
FK_OrderNo AS LHNo, VendorName AS LHVendor
FROM
tbl_ShipmentAPAR
LEFT JOIN
tbl_vendors ON FK_VendorID = VendorID
WHERE
FK_ServiceID = 'LH'
) LHBase ON PK_OrderNo = LHNo
LEFT JOIN
(SELECT
FK_OrderNo AS DANo,
VendorName AS DAVendor
FROM
tbl_ShipmentAPAR
LEFT JOIN
tbl_vendors ON FK_VendorId = VendorId
WHERE
FK_ServiceId = 'DA') DABase ON PK_OrderNo = DANo
這是我得到的錯誤:
這是我的表結構:
CREATE TABLE tbl_ShipmentAPAR
(
VendorID int PRIMARY KEY,
VendorName varchar(200),
FK_OrderNo int
)
CREATE TABLE tbl_vendors
(
FK_VendorID int,
FOREIGN KEY (FK_VendorID) REFERENCES tbl_ShipmentAPAR(VendorID),
FK_ServiceID varchar(200)
)
INSERT INTO tbl_ShipmentAPAR VALUES (1, 'John',123)
INSERT INTO tbl_vendors VALUES (1,'LH')
正如@Chris 提到的,查詢有點不完整。 我猜你正在嘗試做這樣的事情:
SELECT * FROM /*--> Added new */
(
SELECT
FK_OrderNo AS LHNo, VendorName AS LHVendor
FROM
tbl_ShipmentAPAR
LEFT JOIN
tbl_vendors ON FK_VendorID = VendorID
WHERE
FK_ServiceID = 'LH'
) LHBase
LEFT JOIN
(SELECT
FK_OrderNo AS DANo,
VendorName AS DAVendor
FROM
tbl_ShipmentAPAR
LEFT JOIN
tbl_vendors ON FK_VendorId = VendorId
WHERE
FK_ServiceId = 'DA') DABase ON LHBase.LHNo = DABase.DANo /* -->Modified PKOrder no to LHNo because PKOrder no doesn't exist in either of the sub-queries */
這個查詢對我有用。 如果必須更改某些內容,請對此答案發表評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.