php mysql选择多个id

时间:2012-11-21 17:49:31

标签: php mysql sql database

我有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 个答案:

答案 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 . "'");