В большинстве случаев у меня есть запрос, подобный приведенному ниже:
SELECT tutor_school.name, count(*), tutor_school.schoolid
FROM tutor_school, tutor_attends, tutor_tutors_in
WHERE
tutor_school.schoolid = tutor_attends.schoolid and
tutor_school.schoolid in ('1', '2', '3') and
tutor_attends.userid=tutor_tutors_in.userid
group by tutor_school.schoolid LIMIT 0, 10
По сути, я хочу:
Название школы, Количество учеников, посещающих ту школу, в которой учительпо любому предмету, Schoolid
На самом деле я получаю
Название школы, сумма всех предметов, преподаваемых учениками в этой школе, Schoolid - в другихсловами, если ученик 1 наставник 3 предмета, ученик 2 наставник 5, то вместо возвращения 2 я получаю 8!
Я понял, что проблема в следующем утверждении:
tutor_attends.userid=tutor_tutors_in.userid
Это не проверяет существование данного внешнего ключа в удаленной таблице, оно дает результат для каждого экземпляра этого ключа.
То, что я пытаюсь выяснить, этокак связать это, чтобы ограничить это просто существованием данного ключа, а не количеством раз, которое ключ встречается.Я знаю, что видел пример, подобный этому, в моем классе SQL, но я не могу вспомнить, какое было решение.