-2

我有 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,则返回相同的学生。

我可以就如何正确查询这个问题获得一些帮助吗?

4

4 回答 4

1

首先,您需要在学生表中添加一个参考列。然后,如果您想明智地获取数据类,只需class_id 使用 group。您需要的任何方式都可以使您的问题非常清楚。

于 2012-11-21T17:58:37.890 回答
0

只需添加到您的 WHERE 子句,并在 (Class1) 中添加 WHERE class_id

于 2012-11-21T17:55:10.180 回答
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向学生表添加一列之后。

于 2012-11-21T18:08:57.863 回答
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 . "'");
于 2012-11-21T18:51:13.377 回答