【问题标题】:(PHP, MYSQL) How to check the conditions from different database table?(PHP, MYSQL) 如何检查不同数据库表的条件?
【发布时间】:2016-05-29 05:17:38
【问题描述】:

我是 PHP 新手,现在我在从数据库中查询数据的逻辑方面遇到了一些问题。

首先,如果我有 2 个数据库,即应用程序文件和位置文件。

应用文件包括

  1. Application_ID、2.Applicant_ID、3.Position_ID

和位置文件包括

1.Position_ID,2.Position_Name,3.Department_Name

让我展示未完成的代码...

链接(我复制 HTML 提供的字段中的所有内容)-> https://jsfiddle.net/2e50wvzq/

我想集中在这里...

$result4 = mysql_query("SELECT * FROM position"); 
while ($rows4 = mysql_fetch_array($result4, MYSQL_ASSOC)){ 

    $pos_dept = $rows4['Position_Department'];

    $result5 =  mysql_query("SELECT * FROM position WHERE Position_Department = '".$pos_dept."' "); 

    while($rows5 = mysql_fetch_array($result5, MYSQL_ASSOC)){

            $pos_id = $rows5['Position_ID'];

    }

    for($i = 0; $i < $counter; $i++){       
            if($dept_array[$i] == $pos_dept){

            }else{

                        $result6 = mysql_query("SELECT App_Data_ID FROM application_data_file WHERE Position_ID = '".$pos_id."' "); 


                        $pos_app = 0;


                        while ($rows6= mysql_fetch_array($result6, MYSQL_ASSOC)){ 

                            $pos_a = $rows6['App_Data_ID'];

                            $pos_app++;

                        }

                        array_push($dept_array," '".$pos_dept."' ");


                        ?>
                        <TR>

                        <TD> <?php echo $rows4['Position_Department']; ?> </TD>
                        <TD> <?php echo $rows4['Recruitment_Seat'];    ?> </TD>

                        <TD> <?php echo $pos_app; ?>                    </TD>
                        <TD> <?php echo $recruited;   ?>                    </TD>
                        <TD> <?php echo $Vacancy;  ?>                   </TD>



                        </TR>

<?php 
                } 
        } 
}
?>

假设数据库中的数据状态为...

申请文件

  1. 00001, 00001, 00001

  2. 00002, 00003, 00001

  3. 00003, 00002, 00002

  4. 00004, 00004, 00001

  5. 00005、00006、00002

和定位文件

  1. 00001,IT 部程序员

  2. 00002,会计,会计系

作为我的代码,表格中的结果应该是这张图(重点在第一个表格的“申请人总数”选项卡中)

->

从我目前的想法来看,如果我使用上面发布的代码,结果将变成像表 2 一样(或者可能类似)。

如何提供类似于表 1 的结果?请帮忙。

【问题讨论】:

  • 如果它不起作用或没有按预期工作,请通知我,否则,您应该标记为已接受,以便将来其他人注意到。
  • @EdvinTenovim 抱歉检查迟了,我现在正在检查你的代码

标签: php mysql


【解决方案1】:

只需在我的查询中仔细检查名称,但代码总体上可以工作(因为我测试过):

$sql = 'SELECT Department_Name, COUNT(*) AS Total FROM `application_file` LEFT JOIN `position_file` ON (application_file.Position_ID = position_file.Position_ID) GROUP BY Department_Name ORDER BY application_file.Position_ID ';
$result = $db->query($sql);
$total = 0;

if ($result->num_rows > 0)
{
    echo '<table class="table">';
    echo '<tr><td>Department</td><td>Total Recruitments</td><td>Total Applicant</td><td>Making Contract</td><td>Slot left</td></tr>';

    while($row = $result->fetch_assoc())
    {
        echo '<tr><td>'.$row['Department_Name'].'</td><td>x</td><td>'.$row['Total'].'</td><td>x</td><td>x</td></tr>';
        $total += $row['Total'];
    }

    echo '<tr><td>Total</td><td>x</td><td>'.$total.'</td><td>x</td><td>x</td></tr>';
}
else
    echo '0 results';

【讨论】:

  • 当我浏览你的代码时,“Total”不在我的数据库中,实际上它是应该从上面的所有行中计算出来的。另外,现在它告诉我“$result = $db->query($sql);”中存在致命错误
  • 没错,Total 不是您的列之一,但 Total 是我的查询中出现的一个新列。我还注意到您使用的是 PHP 的 mysql 而不是 mysqli,所以这就是出现致命错误的原因。请检查如何配置 mysqli,因为不推荐使用 mysql。
  • 我可以用什么替换 $sql 行中的“Total”?
  • 你不需要替换它,因为它是一个新列,只要不提供任何错误,查询是什么都没有关系。问题(致命错误)在 PHP mysqli 结构中(你的是 mysql)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多