我在尝试连接oracle中的两个表并显示值时遇到问题
我的代码是这样的:
if ($_POST['action'] == 'show'){
$requestCompSql = "SELECT REQUEST_COMPONENT_CUTTING.PROJECT_NAME,
REQUEST_COMPONENT_CUTTING.BASE_PLATE,
REQUEST_COMPONENT_CUTTING.THICKNESS,
COMPONENT.CUTTING.QTY_REQUIRED,
REQUEST_COMPONENT_CUTTING.QTY_REQUESTED
REQUEST_COMPONENT_CUTTING.REQUESTER,
REQUEST_COMPONENT_CUTTING.REQUEST_DATE
FROM REQUEST_COMPONENT_CUTTING
INNER JOIN COMPONENT_CUTTING
ON REQUEST_COMPONENT_CUTTING.PROJECT_NAME = COMPONENT_CUTTING.PROJECT_NAME
AND REQUEST_COMPONENT_CUTTING.THICKNESS = COMPONENT_CUTTING.THICKNESS
AND REQUEST_COMPONENT_CUTTING.BASE_PLATE = COMPONENT_CUTTING.BASE_PLATE = '{$_POST["bp"]}'";
$requestCompParse = oci_parse($conn, $requestCompSql);
oci_execute($requestCompParse);
while($row = oci_fetch_assoc($requestCompParse)){
echo "<div class='table-responsive'>";
echo "<table class='table table-bordered'>";
echo '<table cellspacing = "0"';
echo '<thead>';
echo '<tr>
<th>PROJECT</th>
<th>BASEPLATE</th>
<th>THICK</th>
<th>QTY REQUESTED</th>
<th>QTY REQUIRED</th>
<th>REQUESTER</th>
<th>REQ. DATE</th>
<th align="center">ACTION</th>
</tr>
</thead>';
echo "<tbody>";
echo "<tr class='warning'><td>$row[PROJECT_NAME]</td>";
echo "<td>$row[BASE_PLATE]</td>";
echo "<td>$row[THICKNESS]</td>";
echo "<td>$row[QTY_REQUESTED]</td>";
echo "<td>$row[QTY_REQUIRED]</td>";
echo "<td>$row[REQUESTER]</td>";
echo "<td>$row[REQUEST_DATE]</td>";
echo "<td><input type='button' value='OK' class='btn btn-success'>
<input type='button' value='REJECT' class='btn btn-danger'></td>";
echo "</tr>";
echo "</tbody>";
echo "<table cellspacing = '0'";
echo "</div>";
}
}
给出的错误信息如下:
警告:oci_execute():ORA-00923:在第60行的C:\examplep\htdocs\WeltesInformationCenter\Component_approval\show_requested_Component.php中的预期位置未找到FROM关键字
警告:oci_fetch_assoc():ORA-24374:在第62行的C:\examplep\htdocs\WeltesInformationCenter\Component_approval\show_requested_Component.php中,定义在提取前未完成或执行并提取
我对此感到非常沮丧,因为QTY_REQUIRED
值必须基于PROJECT_NAME
、THICKNESS
和BASE_PLATE
where
子句的最后一行是:
AND REQUEST_COMPONENT_CUTTING.BASE_PLATE = COMPONENT_CUTTING.BASE_PLATE = '{$_POST["bp"]}'
您应该将其分为两种不同的条件:
AND REQUEST_COMPONENT_CUTTING.BASE_PLATE = COMPONENT_CUTTING.BASE_PLATE
AND COMPONENT_CUTTING.BASE_PLATE = '{$_POST["bp"]}'
此外,select
中缺少一个逗号,需要将句点替换为下划线:
SELECT REQUEST_COMPONENT_CUTTING.PROJECT_NAME,
REQUEST_COMPONENT_CUTTING.BASE_PLATE,
REQUEST_COMPONENT_CUTTING.THICKNESS,
COMPONENT_CUTTING.QTY_REQUIRED,
-----------------------------------------^
REQUEST_COMPONENT_CUTTING.QTY_REQUESTED,
---------------------------------------------------------------------^
REQUEST_COMPONENT_CUTTING.REQUESTER,
REQUEST_COMPONENT_CUTTING.REQUEST_DATE
您忘记放置WHERE
,1 COMMA丢失且不规则的三路比较。这样试试:
$requestCompSql = "SELECT REQUEST_COMPONENT_CUTTING.PROJECT_NAME,
REQUEST_COMPONENT_CUTTING.BASE_PLATE,
REQUEST_COMPONENT_CUTTING.THICKNESS,
COMPONENT.CUTTING.QTY_REQUIRED,
REQUEST_COMPONENT_CUTTING.QTY_REQUESTED,
REQUEST_COMPONENT_CUTTING.REQUESTER,
REQUEST_COMPONENT_CUTTING.REQUEST_DATE
FROM REQUEST_COMPONENT_CUTTING
INNER JOIN COMPONENT_CUTTING
ON REQUEST_COMPONENT_CUTTING.PROJECT_NAME = COMPONENT_CUTTING.PROJECT_NAME
WHERE REQUEST_COMPONENT_CUTTING.THICKNESS = COMPONENT_CUTTING.THICKNESS
AND REQUEST_COMPONENT_CUTTING.BASE_PLATE = COMPONENT_CUTTING.BASE_PLATE
AND COMPONENT_CUTTING.BASE_PLATE = '{$_POST["bp"]}'";
嗨,我可以在您的查询中看到两个问题
1,第5行后面缺少逗号","
REQUEST_COMPONENT_CUTTING_QTY_REQUESTEDREQUEST_COMPONENT_CUTTING.REQUESTER,
2、最后一行未正确执行条件
AND REQUEST_COMPONENT_CUTTING.BASE_PLATE=COMPONENT_CUTTING.BASE_PLATE='{$_POST["bp"]}'
这可能是
和REQUEST_COMPONENT_CUTTING.BASE_PLATE=COMPONENT_CUTTING.BASE_PLATEAND COMPONENT_CUTTING.BASE_PLATE='{$_POST["bp"]}'"
以上只是猜测,您可以根据自己的要求进行更正。