【问题标题】:How to fetch and merge data according to groupby Mysql PhpMysql Php如何根据组获取和合并数据
【发布时间】:2021-08-05 07:15:20
【问题描述】:

我正在使用 mysql 和 php,我想根据数组中的“城市”获取数据 这是我的桌子“商人”

merchantid              localityId
1                           30                       
2                           30       
3                           31
4                           30
5                           32

这里是表“locality”

localityId               cityId           name
30                          1              abc 
31                          1              xyz
32                          2              xya

这里是表“城市”

cityId                  name
1                       Chandigarh
2                       Panchkula
3                       Delhi
4                       Mumbai

我想根据“城市/地区”获取数据,例如我想获取城市的所有记录(按城市分组),换句话说我想像下面的输出一样,我该怎么做?

{
    "Status": "1",
    "data": [
        {
            "localityName": "Chandigarh",
            "FilterType": "filter",
            "result": [
                {
                    "id": "1",
                    "name": "",
                    //other info
                },
                {
                    "id": "2",
                    "name": "",
                    //other info
                },
           "localityName": "Panchkula",
            "FilterType": "filter",
            "result": [
                {
                    "id": "3",
                    "name": "",
                    //other info
                },
                {
                    "id": "4",
                    "name": "",
                    //other info
                },  
                ...And so on   
         }       

我尝试使用以下代码,但给了我位置/城市列表,没有给我结果 如我所愿,我哪里错了?

$this->db->select('l.localityId,c.name,c.cityId');
    $this->db->from('merchants m'); 
    $this->db->join('locality l', 'l.localityId=m.localityId');
    $this->db->join('city c', 'c.cityId=l.cityId');
    $this->db->group_by('l.cityId');         
    $query = $this->db->get(); 
    if($query->num_rows() != 0)
    {
        return $query->result_array();
    }
    else
    {
        return false;
    }

【问题讨论】:

  • 您尝试过什么来解决您的问题?为什么不首先检查哪个 SQL 查询适用于您的情况(不使用 PHP!),然后实现该查询?

标签: php mysql sql


【解决方案1】:

你可以试试下面的代码

$this->db->select('l.localityId,l.name')
->from('merchants m') 
->join('locality l', 'l.localityId=m.localityId')
->group_by('m.localityId')
->limit($limit);        
 $query = $this->db->get();
 if($query->num_rows() != 0)
     {
        return $res=$query->result_array();
     }
 else
     {
        return false;
     }

【讨论】:

    【解决方案2】:

    你可以试试这个:

    SELECT c.cityId,c.name,GROUP_CONCAT(DISTINCT(CONCAT(l.localityId))) from locality l 
    JOIN merchants m on l.localityId=m.localityId
    JOIN city c on c.cityId=l.cityId
    GROUP BY l.cityId;
    

    现场演示:SQL FIDDLE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2020-02-18
      • 2013-01-11
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多