SQL视图显示一次相同的ID
Posted
技术标签:
【中文标题】SQL视图显示一次相同的ID【英文标题】:SQL View Shows same id once 【发布时间】:2013-09-11 10:36:05 【问题描述】:我有两个表用于存储有关人员的信息。一个保存用户名和地址信息,另一个保存多个电话号码,这些电话号码通过外键链接到用户 ID。现在我想创建一个视图,其中只有我显示在一行上的用户,并且在电话号码列中,应该列出链接到用户的所有电话号码。我已经尝试过完全加入,它会根据用户拥有多少电话号码多次给我同一个用户。
现在创建视图的代码如下所示
创建视图 StudentData AS SELECT COALESCE(Students.FirstName + ' ', ' ') + COALESCE(Students.LastName, ' ') AS '姓名', COALESCE(Students.City + ', ', '') + COALESCE(Students.Country + ', ', '') + COALESCE(Phone.PhoneType, '') + COALESCE(Phone.PhoneNumber + ', ', '') + COALESCE(Students.StreetAdress + ', ', '') + COALESCE(CAST(Students.ZipCode AS varchar(10)), '') AS 'Adress', COALESCE(CAST(Students.Birthdate AS varchar(11)) + ', ', ' ') + COALESCE(Students.StudentType, ' ') AS '信息' FROM Students FULL JOIN Phone ON Students.StudentID = Phone.StudentID
提前致谢
【问题讨论】:
有一些笨拙的方法可以做到这一点(通常取决于数据库系统的具体情况,因此请为您的 RDBMS 添加标签)。如果可能的话,最好在不同的层中执行此格式化,而不是尝试在数据库中执行此操作。 使用 STUFF 可以完成.. @UpvoteMarkAnswer - 我总是觉得人们关注STUFF
是一种“神奇”的方式来做到这一点很有趣,而事实上,STUFF
调用负责的只是修剪领先逗号离开。 xml path
部分更负责连接。
感谢您的宝贵意见@Mr.Damien_The_Unbeliever..
【参考方案1】:
这是一个字符串连接问题。查询在 SQL Server 中如下所示:
create view v_userphone
select u.username, u.address,
stuff((select ','+phonenumber
from userphone up
where up.userid = u.userid
for xml path ('')
), 1, 1, ''
) as phonenumbers
from users u;
【讨论】:
非常感谢!这让我很开心:-)以上是关于SQL视图显示一次相同的ID的主要内容,如果未能解决你的问题,请参考以下文章