我正在尝试将3个表连接在一起:一个Contacts表,一个Classes表和一个StudentInClasses桥接表,该表与Contacts具有一对一的关系,与Classs具有一对多的关系。
我想要的输出是这样:
但是我得到了这个(我的var_dump可能有不同的信息):
这是我的表格StudentsInClasses,Contacts,Classs(很抱歉,格式问题,我还不能上传图片)。
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 Tomhothotdotdotcom
7 Paul mehomedotcom
23哈里Harryhomedotcom
ClassID ClassName ClassRoom
1 Math-101 273
2 English-202 444
4法语111
5物理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堂课,但我只能上一堂课。 我一直在寻找S.O.和Google寻找解决方案,但我无济于事。
在此先感谢任何可以提供帮助的人! 8-)