使用union从两个表中选择值但使用不同的键

问题描述:

我有两个表格,一个名为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

请你详细解释 –

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}在你的帮助下 –