[英]JOINING table in oracle SQL
我在尝试在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:\\ xampp \\ htdocs \\ WeltesInformationCenter \\ Component_approval \\ show_requested_component.php中找不到预期的FROM关键字
警告:oci_fetch_assoc():ORA-24374:在第62行的C:\\ xampp \\ 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_REQUESTED REQUEST_COMPONENT_CUTTING.REQUESTER,
2,条件在最后一行没有正确实现
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”]}''“
以上仅是一个猜测,您可以根据需要进行更正。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.