2012-11-21 57 views
-2

我有3個表customerclassstudents .....
這是我的表結構:使用用戶的登錄賬號PHP的MySQL選擇多個ID的

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,返回同樣的學生。

我可以得到一些關於如何正確查詢的幫助嗎?

+2

我看不出這可能如何工作。你的學生表中沒有「customer_id」字段。 –

+0

ohh對不起,我有customer_id字段我的學生表...我只是錯過了,我現在編輯我的問題 – mans

回答

0

從我所看到的,我相信你需要連接你的students表到你的customers表(或你的類表,但它沒有多少意義)。然後你可以使用簡單的加入像得到您的結果......

​​

或諸如此類的話,你添加一個customer_id列學生表後。

+0

當我嘗試這個查詢時,我得到以下錯誤:注意:錯誤:字段列表中的列'class_id'不明確 錯誤號:1052 SELECT students_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 =' – mans

+0

'中的'1'根據您列出的不應含糊不清的列。將第一行更改爲'SELECT student_id,c.class_id,firstname,image'以防止出現這種情況 – NappingRabbit

0

只需添加到您的WHERE子句,和WHERE在類標識碼(1類)

+0

我上面的問題class1,class2 class3 3教室名稱的例子... – mans

1

首先,你需要在學生表中添加引用列。 然後,如果您想明智地獲取數據類,只需使用 class_id。任何你需要的方式都能讓你的問題變得非常清楚

+0

是的,你的答案是真正的我這意味着我的問題...你會解釋它是怎麼回事? – mans

+0

在Class_ID子上使用一個group。 – Hituptony

+0

,但使用group by子句..你會得到任何彙總數據studetns classwise..like學生數量classwise。 – Chella

0

我建議在客戶和班級之間建立一個鏈接表。

通過從中刪除customer_id來簡化class表。

然後創建一個具有這個樣子的

Student_has_Class = student_id, class_id 

一個Student_has_Class表然後,你可以查詢該表發現,學生被分配到哪個類。

$query = $this->db->query("SELECT class_id FROM " . DB_PREFIX . "Student_has_Class WHERE 
student_id = '" . $studentId . "'");