【发布时间】: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..
标签: sql sql-server join view group-by