-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 つのクラスを追加しました。

これを適切に照会する方法について助けを得ることができますか?

4

4 に答える 4

1

まず、学生テーブルに参照列を追加する必要があります。次に、賢明なデータ クラスを取得する場合は、 class_idによるグループを使用します。必要な方法で、質問を非常に明確にしてください。

于 2012-11-21T17:58:37.890 に答える
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

WHERE句に追加するだけで、(Class1)のWHERE class_id

于 2012-11-21T17:55:10.180 に答える
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 に答える