
Untitled
By: a guest on
May 6th, 2012 | syntax:
None | size: 1.35 KB | hits: 14 | expires: Never
For each row returned, also return a list of rows that match on some other columns
StudentID ClassID
a 1
b 1
c 1
a 2
a 3
c 2
b 3
StudentID ClassID Classmates
a 1 a,b,c
a 2 a,c
a 3 a,b
SELECT * FROM
(SELECT *, GROUP_CONCAT(StudentID)
FROM enrolled GROUP BY studentID, ClassID)
AS temporary WHERE temporary.StudentID=a
select e.studentid, e.classid, dt.classmates
from (
select classid, group_concat(studentid) as classmates
from enrolled
group by classid
) as dt
join enrolled e on e.classid = dt.classid
where e.studentid = 'a'
+-----------+---------+------------+
| studentid | classid | classmates |
+-----------+---------+------------+
| a | 1 | a,b,c |
| a | 2 | a,c |
| a | 3 | a,b |
+-----------+---------+------------+
+-----------+---------+------------+
| studentid | classid | classmates |
+-----------+---------+------------+
| b | 1 | a,b,c |
| b | 3 | a,b |
+-----------+---------+------------+
+-----------+---------+------------+
| studentid | classid | classmates |
+-----------+---------+------------+
| c | 1 | a,b,c |
| c | 2 | a,c |
+-----------+---------+------------+