Я пытаюсь запустить SQL-запрос (SQL Server), который будет искать список имен из подзапроса.Выберите значения из одной таблицы, где another = value?
У меня есть это, но я получаю «подзапрос возвращает более чем на 1» Ошибка:
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)))
мне это нужно, чтобы вернуть значения FirstName
и LastName
для каждого значения, возвращаемого в подзапроса. (Подзапрос возвращает список идентификаторов GUID, которые должны быть поданы в заявление WHERE MemberGUID
)
Как это можно сделать?
Указывает на то, что вы наделили Guffa на несколько секунд;) Спасибо большое! - Можно ли указать число вхождений рядом с именем? то есть «Myles Grey» Как некоторые GUID появляются несколько раз, и число важно? –
Возможно, но не без рефакторинга с вашей стороны. Вкратце, я думаю, что проще всего было бы создать CTE или временную таблицу, содержащую GUID и их количество. (будет что-то вроде 'SELECT Id, Count (Id) FROM ... WHERE ... GROUP By Id') Затем присоедините' Member' к этому, выбирая имена из 'Member' и count из вашей таблицы CTE/Temp. –
@MylesGray: Вы должны выбрать лучший ответ, не обязательно первый ответ. Кроме того, если вы проверяете время, мой ответ был первым ... – Guffa