I am trying to run a SQL query (SQL Server) that will look up a list of names from a subquery.
I have this but I get a “subquery returned more than 1” error:
SELECT FirstName + ' ' + LastName AS Name
FROM Members
WHERE
(MemberGUID = (SELECT ClassDetails.Leader
FROM Members AS Members_1
INNER JOIN MemberDetails ON Members_1.MemberGUID = MemberDetails.Member
INNER JOIN ClassDetails ON ClassDetails.Class = Members_1.CurrentClass
WHERE
(MemberDetails.JoiningDate >= '02/03/2012')
AND (Members_1.FirstName = '*')
OR (MemberDetails.JoiningDate >= '02/03/2012')
AND (Members_1.LastName = '*')
OR (MemberDetails.JoiningDate >= '02/03/2012')
AND (MemberDetails.Email IS NULL)
AND (MemberDetails.MobilePhone IS NULL)
AND (MemberDetails.WorkPhone IS NULL)
AND (MemberDetails.HomePhone IS NULL)
AND (Members_1.CurrentClass <> 339)
AND (Members_1.CurrentClass <> 696)
AND (Members_1.CurrentClass <> 0)))
I need this to return the values FirstName and LastName for every value returned in the subquery. (The subquery returns a list of GUIDs which should be fed into the WHERE MemberGUID statement)
How can this be done?
Offhand, I would think you could just change
MemberGUID =toMemberGUID IN.As the error message states, your subquery is returning many rows, and you can’t compare a single value to a collection of many rows. But you can look for that value in those rows, which is exactly what the
INoperator does.MSDN Reference