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

时间:2016-09-14 19:21:50

标签: php mysql arrays union

我有两个表一个被命名为老师记录,另一个是学生记录老师记录有列teacher_id,电子邮件(老师的电子邮件)像这样的学生记录有两列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)数组([tech] => TECH20160922)

1 个答案:

答案 0 :(得分:2)

UNION不允许这样做,它需要相同的列名。

您可以添加第二列,其中包含特定行包含的ID类型:

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人员所以我无法预测这个数据集的格式。