2017-05-26 91 views
-1

我找全已經在子查詢的問題。只需要一個眼神敏銳的人來幫忙。謝謝。有返回多個值

SELECT (Select contactid from [tableA].[dbo].tableC where Company = '" & company & "' AND empid = vProfile2.EmpNo) as contactid,vprofile2.EmpNo EmpNo, vprofile2.EmpName EmpName, upper(vprofile2.CompanyCode) CompanyCode, upper(vprofile2.DeptName) DeptName, Upper(vprofile2.JobTitle) JobTitle " & _ 
",Email_add Email,(Select Contact from [tableA].[dbo].tableC where Company = '" & company & "' AND empid = vProfile2.EmpNo) as contact, " & _ 
"(Select Speeddial from [tableA].[dbo].tableC where Company = '" & company & "' AND empid = vProfile2.EmpNo) as Speeddial " & _ 
"FROM [tableA].[dbo].tableC RIGHT JOIN server.tableB.[dbo].[tableD] vprofile2 ON vProfile2.EmpNo = tableC.empid " & _ 
" AND tableC.company=vProfile2.CompanyCode " & _ 
"Inner JOIN server.tableB.[dbo].[tbEmail] vEmail ON vProfile2.EmpNo= vEmail.Emp_No " & _ 
    "WHERE(vprofile2.EmpNo Is Not null) And " & _ 
"vProfile2.CompanyCode = '" & company & "' " & _ 
"ORDER by EmpName " 

我得到一個錯誤,我試圖找到發生了什麼。

子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。

+2

你需要做的第一件事就是了解SQL注入和參數化查詢。然後,一旦你的代碼是安全的,你可以開始處理子查詢問題。 –

+0

我們不知道你的表結構,當前數據,預期結果等等。我不確定你爲什麼使用子查詢 - 當'tableC'已經存在時,它不是一個明顯的方式來構造你的查詢FROM子句和(由於連接條件)被約束爲具有等於「公司」的「公司」值。此外,回聲Zohar的評論,你需要使用參數。 –

+0

向我們展示處理後的查詢,該代碼難以閱讀。 – jarlh

回答

0

這意味着你已經使用了一個子查詢的字段中返回的值,子查詢可以返回多於每行一個記錄:

(Select Speeddial from [tableA].[dbo].tableC where Company = '" & company & "' AND empid = vProfile2.EmpNo) as Speeddial 

確定where子句會這主查詢中每個記錄只返回一個(或零)結果?