Я пытаюсь объединить 3 таблицы вместе: таблицу контактов, таблицу классов и таблицу мостов StudentsInClasses, которая имеет отношение один к одному с контактами и отношение один ко многим с классами.
Мой желаемый вывод такой:
- Питер
- Математика 101
- Французский
- Английский 202
- Физика
- Том Смит
- Французский
- Английский 202
- Пол
- Гарри
Новместо этого я получаю это (моя var_dump может иметь другую информацию):
- Peter
- Tom Smith
- Пол
- Гарри
Вот мои столы StudentsInClasses, Contacts, Classes (извините за форматя не могу загрузить фото).
StudentsInClassID ContactID ClassID.
1 3 1
2 7 4
3 1 4
4 3 1
5 7 2
6 7 2
7 1 2
11 23 4
10 23 5
ContactID ContactName ContactEmail
1 Peter Homeatgoogledotca
3 Tom Tomhotmaildotcom
7 Paul mehomedotcom
23 Harry Harryhomedotcom
ClassID ClassName ClassRoom
1 Math-101 273
2 Английский-202 444
4 Французский 111
5 Physics R444
Мой SQL-запрос:
$getInfo = $conn->prepare("
SELECT ClassName, ContactName FROM StudentsInClasses
JOIN Contacts ON StudentsInClasses.ContactID = Contacts.ContactID
JOIN Classes ON StudentsInClasses.ClassID = Classes.ClassID
GROUP BY ContactName");
$getInfo->execute();
$getInfo = $getInfo->fetchAll();
Мой var_dump производит это (вы можете видеть, что я получаю только однозначное отношение с классами, где я должен бытьполучая 2-3 занятия для каждого контакта):
Гарри
array(4) { ["ClassName"]=> string(6) "French" [0]=> string(6) "French" ["ContactName"]=> string(5) "Harry" [2]=> string(5) "Harry" }
Пол
array(4) { ["ClassName"]=> string(11) "English 202" [0]=> string(11) "English 202" ["ContactName"]=> string(9) "Paul" [2]=> string(9) "Paul" }
Питер
array(4) { ["ClassName"]=> string(11) "English 202" [0]=> string(11) "English 202" ["ContactName"]=> string(5) "Peter" [2]=> string(5) "Peter" }
Том Смит
array(4) { ["ClassName"]=> string(8) "Math 101" [0]=> string(8) "Math 101" ["ContactName"]=> string(9) "Tom Smith" [2]=> string(9) "Tom Smith" }
У каждого человека должно быть 2-3 класса, но я только получаю один.Я искал SO и Google для решения, но я никуда не попал.
Заранее спасибо всем, кто может помочь!8 -)