PHP / SQL: 3 таблицы, одна таблица моста с отношением один к одному и один ко многим - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь объединить 3 таблицы вместе: таблицу контактов, таблицу классов и таблицу мостов StudentsInClasses, которая имеет отношение один к одному с контактами и отношение один ко многим с классами.

Мой желаемый вывод такой:

  • Питер
    • Математика 101
    • Французский
    • Английский 202
    • Физика
  • Том Смит
    • Французский
    • Английский 202
  • Пол
    • Английский 202
    • Физика
  • Гарри
    • Математика 101
    • Физика

Новместо этого я получаю это (моя var_dump может иметь другую информацию):

  • Peter
    • Math 101
  • Tom Smith
    • Французский
  • Пол
    • Английский 202
  • Гарри
    • Математика 101

Вот мои столы 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 -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...