Harpreet_125 Ответов: 1

Добавьте подзапрос в cte, чтобы получить результаты из двух таблиц


declare @nodeid int = '1';
with cte as ( 
select  cust_ID, name,null lnode, null rnode from  user_detail where 
cust_ID = @nodeid 

union all select t.cust_ID,t.name, ISNULL(cte.lnode, CASE WHEN t.joinside = 
0 THEN 1 ELSE 0 END) 
lnode, ISNULL(cte.rnode, CASE WHEN t.joinside = 1 THEN 1 ELSE 0 END) 
rnode from  user_detail t inner join cte on cte.cust_ID = t.parentid )
select cust_ID,name from cte where rnode='0' option (maxrecursion 0)


текущий сценарий:

имя cust_id
1 Гарри
5 Рави
7 Оперативная память
9 Томми
10 Роми

Чего я хочу, так это:

статус имени cust_id(таблица рассрочки)
1 Гарри заплатил
5 Рави не платят
7 Оперативная память не оплачена
9 Томми заплатил
10 Роми заплатила

теперь я объясню, что я хочу: приведенный выше запрос получает результаты только из таблицы user_detail. теперь я хочу изменить запрос таким образом, чтобы он также искал в таблице "рассрочка" столбец "статус" соответствующего cust_id (который возвращает приведенный выше запрос).

Измененный запрос получит значение status из таблицы рассрочки на основе cust_id.

И запрос покажет результаты в третьем столбце, как показано на 2-м скриншоте.

я не очень хорошо знаком с cte и вложенными запросами. Я надеюсь, что вы, ребята, поймете мою проблему.

Что я уже пробовал:

я не знаком с cte и вложенными подзапросами

1 Ответов

Рейтинг:
2

LEOH88

select t.cust_ID,t.name, (CASE ISNULL(cte.lnode, 0) WHEN 1 THEN 'paid' ELSE 'not paid' END) lnode, (CASE ISNULL(cte.rnode, 0) WHEN 1 THEN 'paid' ELSE 'not paid' END)
rnode 
from  user_detail t 
      left join cte on cte.cust_ID = t.parentid 
where user_detail.cust_ID = 'YOUR_ID'


Harpreet_125

давая ошибку... пожалуйста, напишите полный запрос