我有3张桌子customer
class
students
.....
这是我的表结构:
customer = customer_id, name, email
class = class_id, customer_id, classname
students = students_id, customer_id, firstname, image
使用用户登录帐户的客户表
我使用以下查询从students
custmer_id
表中获取数据
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "students WHERE
customer_id = '" . (int)$this->customer->getId() . "'");
foreach ($query->rows as $result) {
$students_data[$result['students_id']] = array(
'students_id' => $result['students_id'],
'class_id' => $result['class_id'],
'firstname' => $result['firstname'],
'image' => $result['image'],
);
}
但看起来无论我在students
表中添加了多少学生,这些学生都回到了每个教室。我在class
表中添加了3个类,例如:class1 class2 class3,我想显示仅在class1下添加的学生,如果我运行class2和class3,则返回同样的学生。
我可以获得一些如何正确查询的帮助吗?
答案 0 :(得分:1)
首先,您需要在学生表中添加参考列。 然后,如果您想明智地获取数据类,只需使用 group by class_id。你需要的任何方式都可以使你的问题非常清楚。
答案 1 :(得分:0)
只需添加到WHERE子句,并在(Class1)
中添加WHERE class_id答案 2 :(得分:0)
从我所看到的情况来看,我认为你需要将你的students
表连接到你的customers
表(或者你的类表,但它没有意义)。然后你可以使用简单的连接来获得你的结果......
SELECT student_id, class_id, firstname, image
FROM students s,
class c,
customer u
WHERE u.customer_id = c.customer_id
AND s.customer_id = c.customer_id
AND c.customer_id = $this->customer->getId()
在您的学生表中添加customer_id
列后,或其他相关内容。
答案 3 :(得分:0)
我建议在客户和班级之间创建一个链接表。
通过从中移除class
来简化customer_id
表。
然后创建一个看起来像这样的Student_has_Class
表
Student_has_Class = student_id, class_id
然后您可以查询该表以查找哪些学生被分配到哪个班级。
$query = $this->db->query("SELECT class_id FROM " . DB_PREFIX . "Student_has_Class WHERE
student_id = '" . $studentId . "'");