I have a N-N table, lets say as an example Teachers and Subjects:
There is a Teacher
table as follows:
+---------------+-----------------------+
| Id | Name |
+---------------+-----------------------+
| 1 | John Williams |
| 2 | Erika Miller |
+---------------+-----------------------+
There is a Subject
table as follows:
+---------------+-----------------------+
| Id | Name |
+---------------+-----------------------+
| 1 | Music |
| 2 | Art |
| 3 | Languages |
| 4 | Geography |
+---------------+-----------------------+
And there is a TeacherTeachesSubject
as follows:
+---------------+-----------------------+
| TeacherId | SubjectId |
+---------------+-----------------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 3 |
| 2 | 4 |
+---------------+-----------------------+
Only that each table has more than 10000 entries.
I need to make a query which returns me something like this:
+---------------+-----------------------+
| Teacher | SubjectsOfThatTeacher |
+---------------+-----------------------+
| John Williams | Music, Art, Languages |
| Erika Miller | Languages, Geography |
+---------------+-----------------------+
What I am doing right now is:
SELECT * FROM Teachers;
Save the results in an array.
Iterate over the array executing this query in each loop:
SELECT Name FROM Subjects inner join "everything" WHERE TeacherTeachesSubject.TeacherId = actualteacherid;
Save the results as String, separated with commas.
I'm making 10000 queries every time I want to select all data from the table.
Do you know any way of making this work efficiently? I don't really need commas, I just need it to be in a String to show in a HTML column as a String.