Как бы я ограничил свой оператор CONCAT только идентификатором из оператора if в MySQL - PullRequest
0 голосов
/ 27 апреля 2020

Я уже некоторое время бью себя об стену об этом. Я пытался следовать идее Concat в операторе If , но я не могу найти способ заставить мои специфические c работать. Теперь я дохожу до синтаксической ошибки в моем операторе CONCAT. 'WHERE req.reqCreatedBy =' 0 'THEN' Unknown 'ELSE users.firstname,' ', users.lastn'. Кто-нибудь может мне помочь с вводом имени и фамилии в этом запросе? Я в полной растерянности.

SELECT req.reqID as Id,
reqDesc.titleText as Title,
req.reqCity as City,
req.reqState as State,
req.areaID as Area,
area.areaname,
reqType.typeTitle as Type,
req.reqCreatedDate as Created,
req.reqEndDate as `End`, 
CONCAT((CASE WHERE req.reqCreatedBy = '0' THEN 'Unknown' ELSE users.firstname,' ',users.lastname END))
AS Recruiter
FROM apps_job_request as req
INNER JOIN apps_job_request_description as reqDesc
ON req.reqTitle = reqDesc.titleID
INNER JOIN apps_job_request_type as reqType
ON reqDesc.typeID = reqType.typeID
INNER JOIN `assemble_users`.area AS area
ON area.areaid = req.areaID
INNER JOIN `assemble_users`.users AS users
ON users.username = req.reqCreatedBy 
WHERE req.reqID is not null
AND req.reqActive = '1'

1 Ответ

0 голосов
/ 27 апреля 2020

Если проверено только одно значение req.reqCreatedBy, может быть простой оператор IF, используйте CASE для нескольких проверенных значений.

SELECT req.reqID          as Id,
       reqDesc.titleText  as Title,
       req.reqCity        as City,
       req.reqState       as State,
       req.areaID         as Area,
       area.areaname,
       reqType.typeTitle  as Type,
       req.reqCreatedDate as Created,
       req.reqEndDate     as `End`,
       -- req.reqCreatedBy is '0' OR ''?
       IF(req.reqCreatedBy = '0', 'Unknown', CONCAT(users.firstname, ' ', users.lastname)) AS Recruiter
FROM apps_job_request as req
         INNER JOIN apps_job_request_description as reqDesc
                    ON req.reqTitle = reqDesc.titleID
         INNER JOIN apps_job_request_type as reqType
                    ON reqDesc.typeID = reqType.typeID
         INNER JOIN `assemble_users`.area AS area
                    ON area.areaid = req.areaID
         INNER JOIN `assemble_users`.users AS users
                    ON users.username = req.reqCreatedBy
WHERE req.reqID is not null
  AND req.reqActive = '1'

...