这是一项家庭作业,但我想更进一步。 让我展示我的表格然后我会问我的问题。
Table -- Students
StudentID PK, LastName, FirstName,
Table -- Courses
CourseID PK, CourseName
Table -- Registrations
StudentID FK, CourseID FK
问题是如何在该特定单元格中添加多个CourseName?例如,我有一个学生正在上3个课程,我可以在同一行的同一个单元格中显示该特定学生的所有3个课程名称吗?
Example.......
123456, Smith, John, English, Math, Science
很抱歉,如果这看起来过于简单,但我在搜索后找不到我想要的东西。
答案 0 :(得分:0)
您不要将它们放入1个单元格中。 它将是3行。一个例子可以使这一点更清晰:
John Smith:ID 1025
数学ID 2500
在您的数据库中,您将获得以下行:
答案 1 :(得分:0)
在圣诞节的精神中,你总能想象它是火鸡和STUFF它。
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
的更多信息,请参阅