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

Php 使用union从两个表中选择值,但键不同,php,mysql,arrays,union,Php,Mysql,Arrays,Union,我有两张表:教师成绩表和学生成绩表 teacher-record has two columns: teacher_id, email (email of teacher) student-record has two columns: student_id, email (email of student) 我正在尝试通过使用联合使用单个查询来选择教师id和学生id 这是我使用的MySQL查询(我也使用codeignitor) 现在,我得到的结果是: Array ( [std] =>

我有两张表:教师成绩表和学生成绩表

teacher-record has two columns: teacher_id, email (email of teacher)
student-record has two columns: student_id, email (email of student)
我正在尝试通过使用联合使用单个查询来选择教师id和学生id

这是我使用的MySQL查询(我也使用codeignitor)

现在,我得到的结果是:

Array ( [std] => SID2016063(student_id) ) Array ( [std] => TECH20160922(teacher_id) )
我正在尝试或得到的是这样的:

Array ( [std] => SID2016063 ) Array ( [tech] => TECH20160922 )

如何得到这样的结果?

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爱好者,所以我无法预测此数据集的格式。

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爱好者,所以我无法预测此数据集的格式。

UNION需要相同的列名,您可以添加第二列,指定这是哪种类型的
id
。您能否详细解释UNION需要相同的列名,您可以添加第二列,指定这是哪种类型的
id
。您能详细解释一下吗?工作很好,非常好,您是非常有帮助的,答案解释得很好,非常感谢我在php中为每个($res as$key=>$value){if($value['type']=='std')){echo'你是有id的学生。$value['id'];echo'
';}elseif($value['type']=='tech'){echo'你是有id的老师。$value['id'];}}在你的帮助下工作得很好,你们人民非常棒,非常有帮助,答案解释得很好,非常感谢我为每个人做的php($resas$key=>$value){if($value['type']==='std'){echo'你是id为的学生。$value['id'];echo'
';}elseif($value['type']=='tech'){echo'你是id为的老师。$value['id'];}在你的帮助下