JOINING table in oracle SQL


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:''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_NAMETHICKNESSBASE_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"]}'"

以上只是猜测,您可以根据自己的要求进行更正。