I was wondering if there is a better way to do the nested select
s so that the firstname and surname is only doing one select
(but still returning 2 fields) - something like a join
with a where
clause in it that only returns the first matching object.
SELECT
w.[RECID],
w.[PERSONNELNUMBER],
(
SELECT TOP 1
[FIRSTNAME]
FROM [dbo].[DIRPERSONNAME] AS d
WHERE d.PERSON = w.PERSON
) AS FirstName,
(
SELECT TOP 1
LASTNAME
FROM [dbo].[DIRPERSONNAME] AS d
WHERE d.PERSON = w.PERSON
) AS Surname,
u.[USER_] AS UserName,
l.[LOCATOR] AS Email,
(
SELECT TOP 1
ed.MARHRSTRUCTUREID AS Structure
FROM [dbo].[HCMEMPLOYMENT] AS e
INNER JOIN [dbo].[MARHCMEMPDETAILS] AS ed ON e.RECID = ed.EMPLOYMENT
WHERE e.Worker = w.RECID
) AS Structure
FROM
[dbo].[DIRPARTYTABLE] AS p
INNER JOIN [dbo].[HCMWORKER] AS w ON w.PERSON = p.RECID
LEFT JOIN [dbo].[DIRPERSONUSER] AS u ON w.PERSON = u.PERSONPARTY
LEFT JOIN [dbo].[LOGISTICSELECTRONICADDRESS] AS l ON l.RECID = p.PRIMARYCONTACTEMAIL
Structure
column? – Malachi Jun 30 at 14:46FIRSTNAME
orSURNAME
return null on occasion as well? – Malachi Jun 30 at 15:21