请帮我解决mysql查询...
我遇到这种情况:
表1 - 任务
**id**|task_name|status|created_at|updated_at|user_id
和表2 - 样本
id|sample_name|...|...|...many other things|**task_id**|user_id
我希望在第2列的第2列中找到它; task_id"是" id"来自表1或" tasks.id" ?
我有这个查询,但结果是每列中的数字1而不是每个条目的ID ..
INSERT INTO samples(task_id),
SELECT tasks.id from tasks
JOIN samples
ON task_id = tasks.id
感谢您的帮助...
答案 0 :(得分:1)
假设您是通过PHP(基于您对其进行标记)并假设您需要插入两个表,那么基本的jist将是(也假设任务中的id字段是自动递增):
$stmt1 = $conn->prepare("INSERT INTO tasks (fields, other_fields) VALUES (?, ?)"))
{
$stmt1->bind_param("ss",$fields, $other_fields);
$stmt1->execute();
$lastid = $conn->insert_id;
$stmt1->close();
}
现在,您可以在插入样本数据时使用变量$ lastid作为值。
$stmt2 = $conn->prepare("INSERT INTO samples (id, other_fields, task_id) VALUES (?, ?, /)"))
{
$stmt2->bind_param("isi",$ID, $other_fields, $lastid);
$stmt2->execute();
$stmt2->close();
}
如果样本已经存在并且您需要使用任务中的id更新它,那么您只需在插入任务后更新样本,假设您可以在where子句中使用可以唯一标识记录的内容想要更新:
$stmt2 = $conn->prepare("UPDATE samples set task_id = ? where user_id - ?)
$stmt2->bind_param("ii",$lastid, $user_id);
$stmt2->execute();
$stmt2->close();
}
else {
die(mysqli_error($conn));
}
我知道,我做了很多假设。但我无法发表评论,所以这是我唯一的协助方式。
答案 1 :(得分:-2)
不幸的是,您的方法不正确且不合逻辑。 在您录制的那一刻,没有可以统一表格数据的字段,因此您需要先获取 task_id ,然后将其插入查询