Php 将两个循环转换为smarty
我有两个PHP周期,需要转换为smarty结构。Down包括PHP代码 代码:Php 将两个循环转换为smarty,php,mysql,templates,smarty,Php,Mysql,Templates,Smarty,我有两个PHP周期,需要转换为smarty结构。Down包括PHP代码 代码: $query=mysqli\u query($cnn,“选择*,计数(*)作为课程内部的ph值连接完成的课程在course.id=completed\u course.id\u课程组按course.id”); 而($row=mysqli_fetch_数组($query)){ 好的,那么您的问题实际上是关于SQL的。让我们看看您的查询。第一个查询如下所示: SELECT COUNT(*) AS abs FROM pa
$query=mysqli\u query($cnn,“选择*,计数(*)作为课程内部的ph值连接完成的课程在course.id=completed\u course.id\u课程组按course.id”);
而($row=mysqli_fetch_数组($query)){
好的,那么您的问题实际上是关于SQL的。让我们看看您的查询。第一个查询如下所示:
SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course = {DATA FROM FIRST QUERY}
SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course IN (
SELECT id_kurz
FROM completed_course
)
我假设(因为我对您的数据库方案一无所知),这将给出课程列表和学生人数(可能-我不知道已完成课程表中的内容)谁完成了它们。如前所述,此查询还将从completed\u course
表中提供一些数据,但它可能没有意义,因为您仅在course.id
上分组
第二个问题是:
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
)
这个查询大概是为了给您提供已完成课程的参与者总数。为了实现这一点,WHERE
子句可以如下所示:
SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course = {DATA FROM FIRST QUERY}
SELECT COUNT(*) AS abs
FROM participant
WHERE id_completed_course IN (
SELECT id_kurz
FROM completed_course
)
请注意,我在第一个查询中选择了值,并将它们作为
子句中的的一部分。此查询可以大大简化-例如,子查询中的联接实际上只是从已完成课程
表中选择的ID值:
SELECT COUNT(*) AS abs
FROM participant
INNER JOIN completed_course ON participant.id_completed_course=completed_course.id_kurz
如果您完全去掉子查询,只将参与者加入到completed\u course
表中,查询实际上会更有效
最后一个查询将为您提供一个值:id\u completed\u course
值对应于completed\u course
表中某个项目的参与者人数。您可以使用mysqli
方法检索此数据并将其传递给Smarty模板。查看。这是学习的好起点ing Smarty。@Kryten我试过了。我需要,作为第一个SQL查询的ID值,以获取第二个查询的WHERE。我实际上有:$mysqli->query(“SELECT*,COUNT(*)as ph from course internal JOIN completed_course ON course.ID=completed_course.ID_kurz GROUP BY course.ID”);$data=$mysqli->fetch_all();$mysqli->query(“选择COUNT(*)作为id_完成的参与者的abs(课程={第一次查询的数据}”);$data2=$mysqli->fetch_all();