[英]Combining more than one piece of data in a cell. sql
这是用于家庭作业,但我想走得更远。 让我展示我的桌子,然后我问我的问题。
Table -- Students
StudentID PK, LastName, FirstName,
Table -- Courses
CourseID PK, CourseName
Table -- Registrations
StudentID FK, CourseID FK
问题是如何在该特定单元格中添加多个“课程名称”? 例如,我有一个学生上3个班,我可以在同一行的同一单元格中显示该特定学生的所有3个课程名称吗?
Example.......
123456, Smith, John, English, Math, Science
抱歉,这看起来很简单,但是搜索后我找不到我想要的东西。
您不要将它们放入1个单元格中。 这将是3行。 一个示例将使这一点更加清楚:
约翰·史密斯(John Smith):ID 1025
数学ID 2500
在数据库中,您将获得以下行:
好吧,本着圣诞节的精神,您总是可以想象这是一只火鸡,然后把它塞满。
DECLARE @Students TABLE(StudentID INT, LastName VARCHAR(50), FirstName VARCHAR(50))
DECLARE @Courses TABLE(CourseID INT, CourseName VARCHAR(50))
DECLARE @Registrations TABLE(StudentID INT, CourseID INT)
INSERT INTO @Students VALUES
(123456, 'John', 'Smith'),(123457, 'Adrian', 'Sullivan'),(123458, 'Dude', 'Guy')
INSERT INTO @Courses VALUES
(1,'English'),(2,'Math'),(3,'Science')
INSERT INTO @Registrations VALUES
(123456,1),(123456,2),(123456,3),(123457,1),(123457,2),(123458,3)
DECLARE @STID INT
SELECT *, STUFF((SELECT ','+C2.CourseName
FROM @Registrations R2
INNER JOIN @Courses C2 ON C2.CourseID = R2.CourseID
WHERE R2.StudentID = S.StudentID
FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '') [AllText]
FROM @Students S
有关STUFF的更多阅读
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.