DBlank is correct. There is only 1 line of data, so there is only 1 line to display on the report. What you are wanting, I think, is to have 3 lines for mr smith. 1 for english, 1 for math, and 1 for physics...now you can split up where to print mr smith.
Crystal is reading the data a row at a time and deciding what to do with it. The subreports requery the data and, in effect, are getting duplicate rows so that they can be reported on multiple times. So if only sees 1 row, it will only print 1 row...it can't go back
I realize the example is simple and that there is probably more to the report, but if it was just getting a list of tutors for subjects, you could create lists of tutors for each subject...In the detail section you would have a formula that would scan for keywords, and if it found a keyword, it would add the name to a variable say LanguageTutors. At the end of the group it would list out the different tutor types. Oh yeah, the detail section would be suppressed, just the formula would run.
If you created a stored procedure to get your data you should be able to make the 1 row for mr smith become 3.
Hope this helps.