>好的,到目前为止,我已经通过使用 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"
}
]
这
在UNION
上是不可能直接实现的,正如MySQL文档所解释的那样:
第一个 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 个查询更好......