2016-09-14 50 views
0

我有兩個表格,一個名爲teacher-record,另一個是學生記錄teacher-record,有列teacher_id,這個student-record的email(教師的電子郵件)有兩個列student_id數據,電子郵件(學生的電子郵件),我試圖選擇teacher_id和student_id數據使用單查詢,我使用工會使用union從兩個表中選擇值但使用不同的鍵

MySQL查詢我用於上述目的就是這個樣子我也使用codeignitor

public function get_std_tech_id($std_email,$tech_email) 
    { 
    $query = $this->db->query("SELECT `student_id` AS std FROM `student-record` WHERE `email`= '$std_email' UNION ALL SELECT `teacher_id` AS tech FROM `teacher-record` WHERE `email` ='$tech_email'"); 
      return $query->result_array(); 
} 

現在我得到一個陣列

陣列([STD] => SID2016063)(student_id數據)陣列([STD] => TECH20160922(teacher_id))

什麼,我想還是要得到的是這樣的

陣列([STD] = > SID2016063)Array([tech] => TECH20160922)

+2

UNION需要相同的列名稱,您可以添加第二列,指定「id」是什麼類型。 – Shaharyar

+0

請你詳細解釋 –

回答

2

UNION不會允許你這個,它需要相同的列名。

您可以添加含有什麼類型的ID的第2列特定行包含:

SELECT `student_id` AS id, 'std' AS type FROM `student-record` WHERE `email`= '$std_email' 
UNION ALL 
SELECT `teacher_id` AS id, 'tech' AS type FROM `teacher-record` WHERE `email` ='$tech_email' 

然後在PHP中可以區分基於列type結果。

PS:我不是一個PHP傢伙,所以我無法預測這個數據集將以何種格式出現。

+0

工作正常,非常好你的人是真棒自發非常有幫助和答案很好解釋很欣賞 –

+0

很高興你學到了一些 – Shaharyar

+1

在PHP我做了foreach($ res作爲$ key => $ value) { \t \t \t如果($值 '類型'] === 'STD') \t \t \t { \t \t \t \t回聲 '你是學生,ID爲' $值 '身份證']。 \t \t \t \t echo'
'; \t \t \t} \t \t \t ELSEIF($值 '類型'] === '高科技'){ \t \t \t \t回聲 '你是老師與ID爲' $值 '身份證']。 \t \t \t} \t \t}在你的幫助下 –

相關問題