我有两个查询,我想将它们合并为一个,这样它只返回我的数据库中的一行。
我试过GROUP BY g.groupid
,但我一直收到错误。任何人都可以告诉我代码吗?
以下是我的疑问:
UNION
答案 0 :(得分:1)
UNION用于将多个SELECT查询组合到单个结果集中。检查mySQL(或任何通用的ANSI SQL)文档。
无论如何,由于没有明显的原因,当你看起来像是在插入同一个表并且想要将所有内容插入到同一个表中的同一个行中时,你正在进行两次INSERT查询。现在,您将创建2行而不是1.您可以插入多个字段作为单个查询的一部分。
我在想:
if(isset($_POST["response"]))
{
$query = "INSERT INTO response (student_id, response) SELECT studentid, :response FROM student WHERE studentid = :studentID";
$statement = $conn->prepare($query);
$statement->execute(
array(
':response' => $_POST["response"],
':studentID' => $_SESSION['studentid']
)
);
}
但是,由于您只需要表中的studentID,并且您已经拥有该会话中的studentID,因此从学生表中进行选择似乎毫无意义。唯一的例外可能是您需要验证会话中的值是否正确 - 但在将其添加到会话之前,您肯定已经验证过了吗?如果你没有,你当然应该。
所以实际上只是
if(isset($_POST["response"]))
{
$query = "INSERT INTO response (student_id, response) VALUES (:studentID, :response)";
$statement = $conn->prepare($query);
$statement->execute(
array(
':response' => $_POST["response"],
':studentID' => $_SESSION['studentid']
)
);
}
应该足够了。