Om jag har en tabell som heter tempCourse där jag vill infoga data från en annan tabell. Men också i en kolumn vill jag infoga data från flera rader till en sträng.
INSERT INTO tempCourse (courseID, courseName, courseDate)
SELCT courseID, courseName, courseDate FROM Courses
Detta fungerar. Men i tempCourse finns ytterliggare en kolumn som heter CourseClasses. I den vill jag infoga en lista på klasser som är kopplade till kursen som en sträng liknande: "3B,3C,3A"
Jag kan få fram dessa rader med denna sql-sats:
SELECT c.className
FROM courseParticipants AS cp INNER JOIN
classParticipants AS clp ON cp.UserID = clp.UserID INNER JOIN
classes AS c ON clp.classID = c.classID
WHERE (cp.courseTeacher = 0) AND (cp.courseID = @courseID)
GROUP BY c.className
ORDER BY c.className
Denna kod listar de olika klasserna och courseID ska såklart vara den raden för kursen som man är på.
Nej, det vill du inte (om det inte är en historik-kolumn). Att lagra flera värden i en kolumn är ett misstag som obönhörligen kommer att bita dig i foten.
I MySQL finns funktioner för att aggregera kolumner i kommalistor och i SQL Server 2005 (m.fl) kan man lägga till sådana funktioner, men du bör verkligen ta en funderare på om du behöver detta.
Jag behöver det för att kunna göra jämförelser med data som kommer från en annan databas som vi inte kan påverka. Det ska bara vara en temptabell för att få reda på kursID sedan raderas temptabellen.
300 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e