【发布时间】:2016-04-26 11:29:27
【问题描述】:
大家好,我目前正在处理一个路边缺陷项目,并且在我的研究中遇到了困难。 我正在尝试使用 sql 代码从不同的表中选择多个值
$sql = "SELECT d.defect_Id, d.priority, r.date
FROM `defect_report` AS d,
`report` AS r
WHERE d.report_Id = r.report_Id";
此代码在下面选择我需要的值:
defect_Id | priority | date
64 1 2016-01-06 19:17:40
65 3 2016-01-06 19:17:47
81 2 2016-01-06 19:17:47
82 1 2016-01-06 19:17:47
83 1 2016-01-06 19:17:47
66 3 2016-01-06 19:18:30
67 5 2016-01-06 19:18:37
68 4 2016-01-06 19:18:43
69 1 2016-01-06 19:18:49
但是,当我分配作业时,我希望上表仅显示未分配的作业。我使用的表单一次只显示一个作业,并允许我将维修团队提交给作业,并在作业表中为其分配作业编号并发布时间戳。
例如,一旦提交缺陷 64,就会在作业表中分配给一个团队。如何添加到下面的代码中,以便在页面重定向时不会再次显示此缺陷。
foreach ($cxn->query($sql) as $row )
{
echo "<tr><td><input type='text' name='defect_Id' value='$row[defect_Id]'</td>";
echo "<td>$row[priority]</td>";
echo "<td>$row[date]</td></tr>";
}
echo"</table>";
我尝试了许多选项,但我的语法错误。实际上,这就是我试图在一个 sql 语句中实现 2 个 WHERE 子句的原因,这可能吗?
$sql = "SELECT d.`defect_Id`,d.`priority`, r.`date`
FROM `defect_report` AS d, `report` AS r
WHERE r.`report_Id` = d.`report_ID`
OR
WHERE NOT EXISTS
(
SELECT `defect_Id`
FROM job AS j
WHERE d.`defect_Id` = j.`defect_Id` )";
在 Job 表中,主键是 job_Id
索引为defect_Id & repair_Team
在defect_report 表中,主键为defect_Id,索引为report_Id
在报告表中,主键是report_Id,报告人的索引为member_Id。
非常感谢。
【问题讨论】:
-
这需要大量代码。你能不把它简化到关键部分吗
-
也标记 dbms 使用。 (那里有一些非 ANSI SQL...)
-
也是这些代码片段之一,在此之后
Once submitted defect 64 will have a assigned被 PHP 标记弄乱了 -
这是一个漏掉的错误
-
我想确保我理解这一点。您要查找的查询是否应该返回来自
defect_report的尚未分配维修团队的记录?
标签: php sql select syntax where-clause