【问题标题】:how can i group the ouput in php? [duplicate]如何在 php 中对输出进行分组? [复制]
【发布时间】:2020-10-02 08:19:30
【问题描述】:

我正在尝试创建一个时间表。通过选择日期,我将不得不按公司显示当时过期的所有产品,我们以这两个数据库为例:

公司DB:

+------------+-----------+
| id_company | name      |
+------------+-----------+
| 1          | Microsoft |
+------------+-----------+
| 2          | Apple     |
+------------+-----------+
| 3          | IBM       |
+------------+-----------+

产品DB:

+-------------+----------------+---------------+---------------+
| id_products | id_pro_company | name_products | control_dates |
+-------------+----------------+---------------+---------------+
| 1           | 1              | pc            | 2020-10-02    |
+-------------+----------------+---------------+---------------+
| 2           | 2              | tablet        | 2020-10-10    |
+-------------+----------------+---------------+---------------+
| 3           | 3              | phone         | 2030-10-10    |
+-------------+----------------+---------------+---------------+

查询:

SELECT * FROM products as p JOIN company as c on c.id_company = p.id_pro_company and p.control_dates LIKE ?

现在我有我需要的所有记录,但是我如何在 php.ini 中对输出进行分组。 示例:

$date = '%2020-10%';
$query = $mysqli -> prepare('SELECT * FROM products as p JOIN company as c on c.id_company = p.id_pro_company and p.control_dates LIKE ?');
$query -> bind_param('s',$date);
$query -> execute();
$result = $query -> get_result();
if($result -> num_rows > 0){
   //how group for company then for products then output the record?
}else{
    echo 'Nothing to do';
}

正如您在代码中的评论中看到的那样,我不明白如何对包含产品的公司进行分组。

示例输出:

 1. Microsoft
    - PC
      * 1 - pc - 2020-10-02
 
 2. Apple
    -tablet
      * 2 - tablet - 2020-10-10

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    使用 mysl,您将始终得到一个平面数组(因此数据将重复),因此我们的想法是在同一个数组上进行嵌套 foreach:第一个将输出供应商,第二个在供应商上带有 if 将回显产品类型和第三个将与产品相呼应。但这非常低效。

    我会进行类似三个不同的查询:查找供应商、查找产品类型和查找产品。

    第三种方法是操作您的数组以将其拆分为每个供应商的不同数组,但这与多个查询恕我直言相比效率较低

    【讨论】:

    • 那么创建一个查询并 foreach 它并为每个产品创建一个带有另一个查询的第二个 foreach ?
    • 是的,你循环供应商并且在里面你有 rpoducts 的查询。在第二个查询中,您在 where 子句中传递供应商,以便您仅获得相关数据。请注意,在供应商查询中,无论如何您都应该加入产品表以仅获取您要显示的供应商,而不是所有供应商。
    • 我试着让你知道现在谢谢。
    • 完成。感恩 ;)
    猜你喜欢
    • 2017-04-20
    • 2018-12-31
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2022-11-17
    • 2018-11-13
    • 2016-11-07
    • 2017-12-06
    相关资源
    最近更新 更多