[英]Get one column from one table with two columns of another table
我想其中一個列的結果在一個輸出組合DepositNo
,另一個是Doc_Type
其中任何Doc_Type
等於DocType
(反之亦然),該DepositNo
的DocType
顯示。
這是我的查詢:
SELECT Doc_Type
FROM Doc_Outgoing_Details
WHERE (Doc_Type <> 67)
UNION
SELECT DepositNo, DocType AS Doc_Type
FROM Doc_Outgoing
WHERE (DocType <> 67)
當我執行它時,它說:
UNION在其目標列表中必須具有相等數量的表達式。
當您使用並集時,您應該匹配所有列,並且結果集應具有相同數量的列,因此您也需要在第一查詢中生成Doc_Type列:
SELECT Doc_Type,0 as Doc_Type // or every value
//that you didn't use in real DOCTYPE
FROM Doc_Outgoing_Details
WHERE (Doc_Type <> 67)
UNION
SELECT DepositNo, DocType AS Doc_Type
FROM Doc_Outgoing
WHERE (DocType <> 67)
因為投影在SELECT
語句上的列數不匹配。 第一個包含一個列,其他第二個包含兩個列。 嘗試在第一個查詢中添加空值,
SELECT Doc_Type as DepositNo, NULL Doc_Type
FROM Doc_Outgoing_Details
WHERE Doc_Type <> 67
UNION
SELECT DepositNo, DocType AS Doc_Type
FROM Doc_Outgoing
WHERE DocType <> 67
您正在尋找的是INNER JOIN
。
SELECT d.DepositNo, D.Doctype
FROM Doc_Outgoing d
INNER JOIN Doc_Outgoing_Details do
ON d.Doctype = do.Doc_type
WHERE (d.DocType <> 67)
您在第二張
table
上缺少一列。UNION
必須具有相等的columns
。 這應該工作。
SELECT O AS DepoSitNo, Doc_Type
FROM Doc_Outgoing_Details
WHERE (Doc_Type <> 67)
UNION
SELECT DepositNo, DocType AS Doc_Type
FROM Doc_Outgoing
WHERE (DocType <> 67)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.