【问题标题】:How to sort SQL query results if value is the same?如果值相同,如何对 SQL 查询结果进行排序?
【发布时间】:2018-12-08 02:33:18
【问题描述】:

我的数据库中有一个表(项目),它看起来像这样:

 --------------------------------------
| id | name | price | buyer | status   |
 --------------------------------------
| 1    item1    10     Bob   requested |
| 2    item2    20     Bob   requested |
| 3    item3    10     Tom   requested |
 --------------------------------------

我正在尝试查询数据,然后对其进行排序、汇总,然后按名称显示。如果 2 个名称相同,它将在我的 HTML 中将其分组到一个 div 中,如果它们不同,它将将其分组到不同的 div 中。基本上每组名称都是自己的 div,无论有 0 或 20 个名称相同。到目前为止,我这样查询我的数据

$request_data_query = $db->prepare("SELECT * FROM items WHERE status = 'requested' GROUP BY buyer");
$request_data_query->execute();

while($fetch = $request_data_query->fetch(PDO::FETCH_ASSOC)) {

然后我试图比较结果以查看它们是否匹配

    if ($fetch['buyer'] === $fetch['buyer']) {
        //Same name HTML code here
    } else {
       // Single person HTML
    }
}

该代码没有按照我想象的方式排序。这会为重复的名称打印 2 个单独的 div,并且不会打印单个人。我不太确定还能做什么。

【问题讨论】:

    标签: php sql database sorting


    【解决方案1】:

    你可以使用这样的东西。这与您的使用不完全匹配,但基于您的示例。

    // this goes before your loop
    $previousBuyer = '';
    
    // then inside your loop
    if ($previousBuyer === $fetch['buyer']) {
        //Same name HTML code here
    } else {
       // Single person HTML
    }
    $previousBuyer = $fetch['buyer'];
    

    您需要说明您检查的第一个买家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-28
      • 2018-04-12
      • 1970-01-01
      • 2022-08-21
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多