我有两个表一个被命名为老师记录,另一个是学生记录老师记录有列teacher_id,电子邮件(老师的电子邮件)像这样的学生记录有两列student_id,电子邮件(学生的电子邮件)我试过选择teacher_id和student_id使用单一查询我正在使用union
用于上述目的的mysql查询就像这样我也使用codeignitorpublic 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)
答案 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
区分结果。