Как передать значение по умолчанию в имя выбранного столбца, если найдено значение null с внутренним соединением с SQL - PullRequest
0 голосов
/ 10 мая 2019

У меня есть запрос SQL, который показывает подробную информацию о заданиях.здесь у меня есть проверка, если нулевое значение найдено с внутренним соединением, то передайте с предварительным условием.

Вот мой SQL-запрос:

SELECT   
    Jobs.EmailsSent,
    Jobs.SubscriberCount,
    Jobs.CompletedOn,
    Jobs.PreparedEmailID,
    Jobs.JobID,
    Jobs.CreatedOn,
    tbl_Categories.CategoryName,
    tbl_Email_master.Title,
    tbl_From_master.Name As FromUsername,
    tbl_User_master.Name AS CreatedBy 
FROM
    Jobs 
INNER JOIN 
    tbl_Email_master ON Jobs.PreparedEmailID = tbl_Email_master.Id 
INNER JOIN 
    tbl_From_master ON Jobs.FromuserID = tbl_From_master.Id
                    AND  tbl_Email_master.FromUser = tbl_From_master.Id 
INNER JOIN 
    tbl_Categories ON tbl_Categories.Id = Jobs.CategoryID
                   OR (tbl_Categories.Id IS NOT NULL
                       AND Jobs.CategoryID IS NULL) 
-- here pass default value like ALL if Jobs.CategoryID found NULL
INNER JOIN 
    tbl_User_master ON Jobs.UserID = tbl_User_master.Id
                    AND tbl_Email_master.user_id = tbl_User_master.Id
                    AND tbl_From_master.user_id = tbl_User_master.Id
                    AND tbl_Categories.user_id = tbl_User_master.Id
WHERE 
    Jobs.JobID = '7'

Можем ли мы сделать это?

-------------------------------- обновленный --------------------------------

с этим ответом:

INNER JOIN tbl_Categories ON tbl_Categories.Id = coalesce(Jobs.CategoryID,tbl_Categories.Id) OR (tbl_Categories.Id IS NOT NULL AND coalesce(Jobs.CategoryID,tbl_Categories.Id)=tbl_Categories.Id)

У меня есть строка для поиска, подобная:

enter image description here

теперь я просто хочу использовать raws / raw со значением категории по умолчанию ALL.

--------------------------------as text----------------------------------


                    CATEGORY NAME 
0   44  NULL    Friends
0   44  NULL    Family Relatives
0   44  NULL    Business Clients
0   44  NULL    Corporate Profiles
0   44  NULL    test
0   44  NULL    Infisms Clients
0   44  NULL    Infisms Clients

здесь я просто хочу вернуть строку / строку с именем категории как ALL.

Ответы [ 2 ]

1 голос
/ 10 мая 2019

Просто используйте coalesce() функцию

...tbl_Categories.Id = coalesce(Jobs.CategoryID,tbl_Categories.Id) OR 
(tbl_Categories.Id IS NOT NULL 
                   AND coalesce(Jobs.CategoryID,tbl_Categories.Id)=tbl_Categories.Id)

при условии, что tbl_Categories.Id является non-null столбцом

0 голосов
/ 10 мая 2019

Вы можете попробовать это:

INNER JOIN 
tbl_Categories ON tbl_Categories.Id = isnull(Jobs.CategoryID, tbl_Categories.Id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...