Avant d'avoir posé le même problème ( Table de jointure avec émission de virgule (mySQL) ) sur la table de jointure avec virgule dans la colonne.
J'ai deux tables, une structure de table comme ci-dessous:
Nom de la première table: Étudiant
id | name | course_id
——————————————————————————
1 David 1,3
2 Peter 2,4
3 Shawn 2,6
Deuxième nom de table: Sujet
id | subject
———————————————————
1 English
2 Maths
3 Science
4 Geographic
5 Accounting
6 Art & Design
J'ai essayé cette méthode Find_in_set ( Rechercher avec la valeur séparée par des virgules MySQL ), mais il ne peut pas obtenir le résultat réel. Je veux que le résultat réel soit comme ci-dessous:
id | name | subject_name
——————————————————————————
1 David English,Science
2 Peter Maths,Geographic
3 Shawn Maths,Art & Design
J'utilise ci-dessous le code:
SELECT student.id as id,student.name as name,student.subject as subject_name
FROM student
INNER JOIN subject
ON FIND_IN_SET(subject.id, student.course_id) > 0
Mais le résultat m'a montré comme ci-dessous:
id | name | subject_name
——————————————————————————
1 David English
2 David Science
3 Peter Maths
4 Peter Geographic
5 Shawn Maths
6 Shawn Art & Design
J'espère que quelqu'un me guider sur la façon de résoudre ce problème. Merci.
Comme ça
SELECT student.id as id, student.name as name, GROUP_CONCAT(subject.subject) as subject_name
FROM student
INNER JOIN subject
ON FIND_IN_SET(subject.id, student.course_id) > 0
GROUP BY student.id, student.name
Habituellement, nous ne concessons pas tout dans la requête SQL, mais vous pouvez faire
SELECT CONCAT_WS(' ', student.id, student.name, GROUP_CONCAT(subject.subject)) as concated_value
FROM student
INNER JOIN subject
ON FIND_IN_SET(subject.id, student.course_id) > 0
GROUP BY student.id, student.name