php - 将两个循环转换为 smarty

标签 php mysql templates smarty

我在 PHP 中有两个周期,我需要将其转换为 smarty 结构。下载包含 PHP 代码。

代码:

<pre>
$query = mysqli_query($cnn, "SELECT *, COUNT(*) AS ph FROM course INNER JOIN completed_course ON course.id = completed_course.id_course  GROUP BY course.id");

while ($row = mysqli_fetch_array($query)){ 
    <tr> <td> <?php echo  $row['id']; ?></td><td> <?php echo  $row['nazev']; ?  </td><td>
    ?php echo  $row['ph']; ?  </td> <td>
    ?php
    $Number_of_graduates = mysqli_query($cnn, "SELECT COUNT(*) AS abs FROM  participant where id_completed_course = $row[id]");
    while ($rAbs = mysqli_fetch_array($Number_of_graduates)){
    echo $rAbs['abs'];
} ?

</td>
</pre>

问题是。如何从 SQL 转换第一个 id 的第二个循环?

最佳答案

好的,所以你的问题实际上是关于 SQL 的。让我们看看您的询问。第一个看起来像这样:

SELECT *, COUNT(*) AS ph
FROM course
    INNER JOIN completed_course ON course.id = completed_course.id_kurz
GROUP BY course.id

我假设(因为我对您的数据库方案一无所知)这将提供类(class)列表和学生人数(也许 - 我不知道 completed_course 中有什么 表)谁完成了它们。正如所写,此查询还将为您提供 completed_course 表中的一些数据,但它可能毫无意义,因为您仅对 course.id 进行分组。

第二个查询是:

SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course = {DATA FROM FIRST QUERY}

据推测,此查询旨在为您提供已完成类(class)的参与者总数。为了实现这一点,WHERE 子句可能如下所示:

SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course IN (
    SELECT course.id FROM
    FROM course
        INNER JOIN completed_course ON course.id = completed_course.id_kurz
)

请注意,我正在获取第一个查询中选择的值,并将它们作为 IN 子句的一部分。此查询可以显着简化 - 例如,子查询中的 JOIN 实际上只是从 completed_course 表中选择的 ID 值:

SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course IN (
    SELECT id_kurz
    FROM completed_course
)

如果您完全摆脱子查询并将参与者加入到 completed_course 表中,查询实际上会更高效。

SELECT COUNT(*) AS abs
FROM participant
    INNER JOIN completed_course ON participant.id_completed_course=completed_course.id_kurz

最后一个查询将为您提供一个值:id_completed_course 值与 completed_course 表中的一项相对应的参与者数量。您可以使用 mysqli 方法检索此数据并将其传递到您的 Smarty 模板。

关于php - 将两个循环转换为 smarty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22840823/

相关文章:

PHP 向传递给 mysql_query 的字符串添加乱码

php - Laravel firstOrNew 如何检查它是第一个还是新的?

mysql - 基准的选择和更新查询数量?

c++ - 全局模板函数的问题

c++ - 是否可以声明模板的模板?

php - 页脚保持在 <div> 的右侧

php - 使用PHP在mysql中插入数据时返回最后一个id

c# - 始终不一致的 MySQL 查询结果 - 返回 0 行与 n 行

php - Woocommerce 显示每种产品的总零售额

C++:具有比较运算符重载的模板类