我有3个表:获取学生信息,并在一个查询其他关系,并存储在一个对象中的MySQL + PHP
1. Students
- StudentID
- StudentName
- etc...
2. Students_Classes
- StudentID
- ClassID
3. Classes
- ClassID
- ClassName
- etc...
目前,我有两个疑问通过这种方式来存储一个学生的细节和他的课
首先,我运行此查询并返回结果给PHP对象我打电话$学生:
select StudentID, StudentName, etc..., group_concat(DISTINCT stu_to_cla.ClassID) as currentStudentClassesID from Students LEFT JOIN (Students_Classes as stu_cla, Student.StudentID = stu_cla.StudentID) where StudentID = 1
二,我使用$ ClassesID =爆炸( '',$学生[ 'currentStudentClassesID']到阵列,并将它传递至第二查询:
select(ClassID, ClassName, etc... from (Classes) where ClassesID IN ($ClassesID)
现在我有两个目的,一个存储学生信息和他的班级信息。
我的问题是我可以改进它只有一个查询返回他的信息和他的类,我怎样才能在PHP中正确使用它?
UPDATE
现在我有另一种情况,当我有这样几个关系:学生 - 班,学生 - 宿舍,学生 - 美国...
所以我可以得到所有的一个学生信息关于一切,并将其存储在只有 PHP中的一个对象?我应该如何构建最有效和轻量级的mySQL查询? 使用一个大查询立即获取所有内容或先构建学生对象然后构建其他关系对象之后?
JOIN单查询使用的概念:http://www.w3schools.com/sql/sql_join.asp –
你的第一个查询将返回语法错误 – Strawberry
顺便说一句,如果DISTINCT是必要的,那么你可能有您的数据模型存在严重问题 – Strawberry