Mysql Php如何根据组获取和合并数据
Posted
技术标签:
【中文标题】Mysql Php如何根据组获取和合并数据【英文标题】:How to fetch and merge data according to groupby Mysql 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!),然后实现该查询? 【参考方案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
【讨论】:
以上是关于Mysql Php如何根据组获取和合并数据的主要内容,如果未能解决你的问题,请参考以下文章
如何根据使用 jQuery/AJAX 和 PHP/MySQL 选择的第一个下拉列表填充第二个下拉列表?
PHP 使用 2 个数组,如何根据第一个数组的顺序获取两个数组中存在的第一个元素?