2017-05-26 14 views
-1

私はすでに全体を探します。鋭い目で誰かを助けるだけの人が必要です。ありがとう。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 " 

エラーが発生しました。何が起こっているのかを見つけようとしています。

サブクエリが1より大きい値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。

+2

まず、SQLインジェクションとパラメータ化されたクエリについて学んでください。その後、コードが安全になったら、サブクエリ問題の作業を開始できます。 –

+0

私はあなたのテーブル構造、現在のデータ、期待される結果などについては全く知らない。私はサブクエリをなぜ使用しているのか全くわからない。 'tableC'がすでに入っているときにあなたのクエリを構造化する明白な方法ではない'FROM'節と(参加条件のために)' Company'値が 'company'に等しくなるように制約されています。また、Zoharのコメントをエコーするには、パラメータを使用する必要があります。 –

+0

処理されたクエリを表示すると、そのコードは読みにくくなります。 – jarlh

答えて

0

それはあなたがフィールドの値を返すために、サブクエリを使用している、そしてそのサブクエリが行ごとに複数のレコードを返すことができることを意味します

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

あなたは必ずこのwhere句の意志ということですメインクエリの各レコードに対して1つ(またはゼロ)の結果しか返しませんか?

関連する問題