Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示mysql查询的部分结果_Php_Mysql_Arrays - Fatal编程技术网

Php 显示mysql查询的部分结果

Php 显示mysql查询的部分结果,php,mysql,arrays,Php,Mysql,Arrays,我有一个sql查询,它从3个不同的表中提取所有类型的数据,我现在想在一个数组中显示这些数据。我可以让它输出sql查询中的所有数据,但我只想根据表中列的值是否相同一次显示数组的一部分。我们将尝试在下面演示 我的sql结果如下所示: Client | Order | Exc1 | Exc2 | Rest | Reps | ------------------------------------------------------- Steve | 1A | thi

我有一个sql查询,它从3个不同的表中提取所有类型的数据,我现在想在一个数组中显示这些数据。我可以让它输出sql查询中的所有数据,但我只想根据表中列的值是否相同一次显示数组的一部分。我们将尝试在下面演示

我的sql结果如下所示:

Client  |  Order  |  Exc1  |  Exc2  |  Rest  |  Reps  |
-------------------------------------------------------
Steve   |  1A     | this   |  That  |  This  |  that  |
-------------------------------------------------------
Mike    |  1A     | this   |  That  |  This  |  that  |
-------------------------------------------------------
Jax     |  1A     | this   |  That  |  This  |  that  |
-------------------------------------------------------
Steve   |  1B     | this   |  That  |  This  |  that  |
-------------------------------------------------------
Mike    |  1B     | this   |  That  |  This  |  that  |
-------------------------------------------------------
Jax     |  1B     | this   |  That  |  This  |  that  |
我想让我的数组在第1页上输出它

Steve   |  1A     | this   |  That  |  This  |  that  |
-------------------------------------------------------
Mike    |  1A     | this   |  That  |  This  |  that  |
-------------------------------------------------------
Jax     |  1A     | this   |  That  |  This  |  that  |
这个在第2页,依此类推。每页将包含所有客户端的列表,每页仅包含一个订单值。每个用户的订单列值都会有所不同,因为他们可以为订单字段输入自己的文本。这可能吗?如果可能,最好的方法是什么

@Gordon Linoff这是我当前的问题。我真的不明白你写了什么,也不知道它与我的问题有什么关系。下面是我当前的查询。我并没有完成对数组的输出。我只是在测试的时候有这个,直到我得到我想要的结果

function get_workout_class(){
$workout_class = array();

$workout_query = mysql_query("
SELECT *
FROM `movements`
LEFT JOIN  `classes` 
ON `movements`.`class_id` = `classes`.`class_id`
LEFT JOIN `clients`
ON `movements`.`class_id` = `clients`.`class_id`
WHERE `classes`.`class_id` = '$class_id' AND `user_id` = ".$_session['user_id']."
ORDER BY `movements`.`order`, `clients`.`first_name`

");
}

这是我的查询结果的屏幕截图,您可以看到我希望它们如何分组。要按不同顺序值拆分的页面。客户机的数量因班级而异

这是我的新问题。第一部分工作得很好,但子查询给出了我的问题。这不会带来任何结果@戈登林诺夫

function get_workout_class($class_id){
$class_id = (int)$class_id;

$workout_class = array();

$workout_query = mysql_query("
WITH `workouts` as (
SELECT  
 `movements`.`movement_id`,
 `movements`.`order`,  
 `movements`.`mv_00`,  
 `movements`.`mv_01`,  
 `movements`.`mv_02`,  
 `movements`.`mv_03`,  
 `movements`.`mv_04`,
 `movements`.`rep_set_sec`,
 `movements`.`rest`, 
 `classes`.`class_name`,
 `clients`.`client_id`,
 `clients`.`first_name`, 
 `clients`.`last_name`, 
 `clients`.`nickname` 
 FROM  `movements` 
 LEFT JOIN  `classes` ON  `movements`.`class_id` =  `classes`.`class_id` 
 LEFT JOIN  `clients` ON  `movements`.`class_id` =  `clients`.`class_id` 
 WHERE  `classes`.`class_id` = '$class_id'
)

SELECT `wo`.* 
(SELECT COUNT(DISTINCT `order`) FROM `workouts` `wo2` WHERE `wo2`.`order` <= `wo`.`order`) as `pagenum`
FROM `workouts` `wo`
ORDER BY `pagenum`

");

echo mysql_num_rows($workout_query); 
}

试试这个。它使用子查询获取订单的最大值

SELECT  a.*
FROM    myTable a INNER JOIN
            (
                SELECT  Client, 
                        Max(`Order`) as MaxOrder
                FROM    myTable
                GROUP BY Client
            ) c
                ON a.Client = c.Client AND
                   a.`Order` = c.MaxOrder
如果我没弄错的话,那是最简单的

SELECT *
FROM   myTable
WHERE  `Order` = '1B'

我认为您可以通过在查询中添加页码来解决问题。不幸的是,这在mysql中是相当痛苦的,因为您必须使用自连接或相关子查询

下面是如何使用相关子查询执行此操作的示例:

select t.*,
       (select count(distinct order) from t t2 where t2.order <= t.order) as pagenum
from t
order by pagenum
基于原始查询,但不将其放入字符串:

with workouts as (
     SELECT *
     FROM `movements` LEFT JOIN
          `classes`
           ON `movements`.`class_id` = `classes`.`class_id` LEFT JOIN
           `clients`
          ON `movements`.`class_id` = `clients`.`class_id`
      WHERE `classes`.`class_id` = '$class_id' AND `user_id` = ".$_session['user_id']." 
    )
select wo.*,
       (select count(distinct order) from workouts wo2 where wo2.order <= wo.order) as pagenum
from workouts wo
order by pagenum
这几乎能奏效。只有一个警告。您可以将SELECT*放入with子句中,因为您有多个同名的列。把你需要的列放进去

我忘了mysql不支持with语句。我为错误的语法道歉。解决方法之一是使用视图或临时表。否则,查询会稍微复杂一些,因为逻辑必须重复两次:

select wo.*,
       (select count(distinct order)
        from (SELECT *
              FROM `movements` LEFT JOIN
                   `classes`
                   ON `movements`.`class_id` = `classes`.`class_id` LEFT JOIN
                   `clients`
                   ON `movements`.`class_id` = `clients`.`class_id`
              WHERE `classes`.`class_id` = '$class_id' AND `user_id` = ".$_session['user_id']." 
             ) wo2
        where wo2.order <= wo.order
       ) as pagenum
from (SELECT *
      FROM `movements` LEFT JOIN
           `classes`
            ON `movements`.`class_id` = `classes`.`class_id` LEFT JOIN
            `clients`
           ON `movements`.`class_id` = `clients`.`class_id`
       WHERE `classes`.`class_id` = '$class_id' AND `user_id` = ".$_session['user_id']." 
      ) wo
order by pagenum

在站点中搜索Pagination我可以从表中获得准确的值,但我希望所有结果都返回到类中客户端所在的位置,并显示与该类关联的所有数据。我一次只想显示一个订单值。我认为分页可能是我的答案,但还不确定。哦,是的,所以您希望部分显示结果。进行分页:分页不起作用的一件事。当返回我的查询时,显示所有数据所需的页数将因不同订单值的数量而异。例如,在I类中可能有1A、1B、1C、1D 4页,而另一类可能是1A、1B、1C、1D、1E 5页。分页仍然是可能的吗?我在上面发布了我的查询以及一个指向查询结果屏幕截图的链接,因为我不知道如何将您的查询转换为我当前的查询。我的理解是,您希望通过页面将内容分开。因此,此查询将pagenum列添加到返回集中。然后,您可以选择所需的数据页。为了使你的查询能够正常工作,只需像前面一样用t加上a。那么你上面写的内容将遵循我最初发布的现有查询?是的。当我写答案时,你没有包括这个查询。这可能是一个愚蠢的问题,但t和t2代表什么?在这个查询中?