好的,到目前为止我已经尝试使用UNION ALL并将其压缩为一个查询,但是我的数组键工作不正常。
起初我试过这个:
$query = "SELECT student_no AS test
FROM student
WHERE student_no='$studentno' AND password='$password'
UNION ALL
SELECT group_id AS group_id
FROM student_group
WHERE student_no='$studentno'
UNION ALL
SELECT leader AS leader
FROM team
WHERE leader='$studentno'";
但是它返回了student_no:student_no,student_no:group_id和student_no:leader。
它将所有键填充为student_no,即第一个查询。或者如上所述,在尝试使用AS强制测试时进行测试。
我已经通过运行查询三次并将结果填充到数组三次来实现它,但它实际上在大小代码方面增长了三倍,现在感觉非常低效。
请记住,这是一个大学项目,但由于我已经掌握了解决方案,并了解所发生的事情的基础知识,我认为可以提前发布。
以为我会添加它现在返回的实际JSON:
[
{
"student_no":"testing"
},
{
"group_id":"testio"
},
{
"leader":"teeesstt"
}
]
答案 0 :(得分:0)
这不是UNION
直接可行的,因为MySQL doc解释了:
第一个SELECT语句中的列名用作返回结果的列名
可能的是:
$query = "SELECT 'student_no' AS key, student_no AS value
FROM student
WHERE student_no='$studentno' AND password='$password'
UNION ALL
SELECT 'group_id',group_id
FROM student_group
WHERE student_no='$studentno'
UNION ALL
SELECT 'leader',leader
FROM team
WHERE leader='$studentno'";
您将获得第一列中的索引和第二列中的值。
我认为这不比做3个查询更好......