Jaydeep Shah Ответов: 1

Запрос дайте мне дубликат записи я хочу отобразить одну запись


1>PersonalDetail

ClientID (pk)
имя,
фамилия
электронная почта

2> Мастер скилла

Skillid(ПК)
skillname

3> Конечный пользователь
enduserid(ПК)
userid(FK) // perosnaldeail clientid
FeesId(FK)

4> UserskillDetails
удостоверение личности(ПК)
ClientId (FK)
SkillId(Fk)

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

выберите PersonalDetails.name,личные данные.телефон,личные данные,электронная почта,конечный пользователь.Сумма,Мастер Навыков.SkillName
из PersonalDetails присоединитесь к конечному пользователю на PersonalDetails.ClientID = Конечный Пользователь.идентификатор пользователя
присоединяйтесь к Userskilldetail на Userskilldetail.clientId = PersonalDetails.значение ClientID
присоединяйтесь к SkillMaster на SkillMaster.SkillID = Userskilldetail.Skillid



выход
jaydeep	444444	jay@gmail.com	34	mvc
jaydeep	444444	jay@gmail.com	34	jquery



я запросил jaydeep как одну запись и mvc и jquery на одной строке с запятой
jaydeep	444444	jay@gmail.com	34	mvc,jquery

jekin77

Команды, которые будут использоваться: STUFF и FOR XML.

Jaydeep Shah

не могли бы вы помочь мне в создании запроса ..!

j snooze

чтобы расширить реплику jekin77, поскольку sql server в данном конкретном случае не так хорош, как oracle или mysql, эта ссылка должна дать вам представление о синтаксисе.

https://stackoverflow.com/questions/15477743/listagg-in-sqlserver

Karthik_Mahalingam

возможное решение

Jaydeep Shah

но это одно табличное решение ...в моем случае у меня есть 5 таблиц join.
и имя навыка с запятой

Karthik_Mahalingam

Используйте CTE

Jaydeep Shah

КТР ??

Karthik_Mahalingam

CTE в SQL Server[^]

Karthik_Mahalingam

проверьте код, опубликованный santhosh, он работает нормально.

Santosh kumar Pithani

Спасибо тебе, Картик!

Santosh kumar Pithani

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

Jaydeep Shah

это дает мне тот же результат, что и выше
джейдип Шах jaydeepshah81@yahoo.com 50 css
джейдип Шах jaydeepshah81@yahoo.com 50 sql

Santosh kumar Pithani

Создайте таблицу #temp(name varchar(50),phone int,email varchar(max),сумма денег, skillName varchar(10))

вставить в #temp значения('jaydeep',444444,'jay@gmail.com',34,'mvc'),
('матчи jaydeep',444444,'jay@gmail.com',34,'библиотека jQuery'),
("джейдипшах",50,'jaydeepshah81@yahoo.com', 50, 'css'),
("джейдипшах",50,'jaydeepshah81@yahoo.com', 50, 'sql');

Выберите отдельное имя,телефон,адрес электронной почты,сумму,
STUFF((выберите DISTINCT ', '+ SkillName
Из #Temp в Т1
Где именно T1.Name =t2.Name
ДЛЯ XML PATH (") ВВЕДИТЕ
).value('.','NVARCHAR(MAX)') ,1,2,")как имя навыка
С #темп Т2

Karthik_Mahalingam

обновите свое решение с помощью этого кода

Jaydeep Shah

какой код ?

Karthik_Mahalingam

Создайте таблицу #temp(name varchar(50),phone int,email varchar(max),сумма денег, skillName varchar(10))

вставить в #temp значения('jaydeep',444444,'jay@gmail.com',34,'mvc'),
('матчи jaydeep',444444,'jay@gmail.com',34,'библиотека jQuery'),
("джейдипшах",50,'jaydeepshah81@yahoo.com', 50, 'css'),
("джейдипшах",50,'jaydeepshah81@yahoo.com', 50, 'sql');

Выберите отдельное имя,телефон,адрес электронной почты,сумму,
STUFF((выберите DISTINCT ', '+ SkillName
Из #Temp в Т1
Где именно T1.Name =t2.Name
ДЛЯ XML PATH (") ВВЕДИТЕ
).value('.','NVARCHAR(MAX)') ,1,2,")как имя навыка
С #темп Т2

Santosh kumar Pithani

Вы выполнили запрос?

Jaydeep Shah

да
но это дает мне тот же результат

Santosh kumar Pithani

Я думаю, что ваш "мастер навыков.Отношение SkillID = Userskilldetail.Skillid" имеет разные значения

Jaydeep Shah

skillmaster (skillid является основным)
и userskilldetail (skillid-это внешний ключ)

Santosh kumar Pithani

Запрос изменен, так что проверьте его сейчас и обновите меня.

1 Ответов

Рейтинг:
12

Santosh kumar Pithani

Create table #temp(name varchar(50),phone int,email varchar(max),amount money, skillName varchar(10));

insert into #temp values('jaydeep',444444,'jay@gmail.com',34,'mvc'),
('jaydeep',444444,'jay@gmail.com',34,'jquery'),
('jaydeepshah',50,'jaydeepshah81@yahoo.com',	50,	'css'),
('jaydeepshah',50,'jaydeepshah81@yahoo.com',	50,	'sql');

SELECT DISTINCT name,phone,email,Amount,
STUFF((SELECT DISTINCT ', '+ SkillName 
FROM #temp as t1
WHERE T1.Name =t2.Name
FOR XML PATH(''),TYPE
).value('.','NVARCHAR(MAX)') ,1,2,'')AS SkillName 
FROM #temp t2;
------------------------------------------
name	phone	email	Amount	SkillName
------------------------------------------
jaydeep	444444	jay@gmail.com	34.00	jquery, mvc
jaydeepshah	50	jaydeepshah81@yahoo.com	50.00	css, sql

-------------------------------------------------------------------
;WITH X AS( 
SELECT 
      PersonalDetails.name, PersonalDetails.phone,
       PersonalDetails.email,EndUser.Amount,SkillMaster.SkillName 
 FROM PersonalDetails INNER JOIN EndUser 
     ON PersonalDetails.ClientID = EndUser.UserId
   INNER JOIN Userskilldetail ON Userskilldetail.clientId = PersonalDetails.ClientID
   INNER JOIN SkillMaster ON SkillMaster.SkillID = Userskilldetail.Skillid)
 
   SELECT DISTINCT name,phone,email,Amount,
        STUFF((SELECT DISTINCT ', '+SKL.SkillName 
             FROM X AS SKL WHERE SKL.Name=X.Name
                 FOR XML PATH(''),TYPE
                    ).value('.','NVARCHAR(MAX)') ,1,2,'')AS  SkillName 
   FROM X


Karthik_Mahalingam

не публикуйте несколько решений, сохраните только одно и удалите другое

Santosh kumar Pithani

Решение 1 удаляется, а измененный запрос обновляется в решении 2. Спасибо тебе!

Jaydeep Shah

Большое вам спасибо за ваше решение.

Karthik_Mahalingam

Добро пожаловать

Santosh kumar Pithani

Всегда добро пожаловать!