首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按条件使用组连接两个表

按条件使用组连接两个表
EN

Stack Overflow用户
提问于 2018-10-02 10:50:25
回答 2查看 132关注 0票数 5

在这里,我想连接两个表,并希望生成如下所示的输出

代码语言:javascript
复制
Akbar Travels building      2018-10
Thrikandiyur Quarters       2018-10


Akbar Travels building     2018-11
Thrikandiyur Quarters      2018-11

这里有两个表名为table A,table Btable A结构如下所示

代码语言:javascript
复制
category_id              category_name  
    5               Akbar Travels building          
    6               Thrikandiyur Quarters 

table B结构如下所示

代码语言:javascript
复制
id     paying_month     parent_category     
1         2018-10           5   
2         2018-10           5   
3         2018-11           5   
4         2018-11           5   
5         2018-10           6   

为了获得输出,我编写了如下代码

代码语言:javascript
复制
public function get_date_wise_pdf_report($from, $to)
{
       $query=$this->db->query("SELECT * from tableA A left join tableB B  on A.category_id = B.parent_category and B.paying_month BETWEEN '{$from}' AND '{$to}' ");
       return $query->result();
 }

但当我用这个的时候我就会变成这样

代码语言:javascript
复制
Akbar Travels building     2018-10
Akbar Travels building     2018-10
Akbar Travels building     2018-11
Akbar Travels building     2018-11
Thrikandiyur Quarters      2018-10

我不能在这里按组发言,如果我只给出了两行,请帮我解决。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-02 10:53:25

使用不同

代码语言:javascript
复制
SELECT distinct A.category_name,B.paying_month
from tableA A left join tableB B  on A.category_id = B.parent_category and 
B.paying_month BETWEEN '{$from}' AND '{$to}'
order by B.paying_month
票数 4
EN

Stack Overflow用户

发布于 2018-10-02 11:15:55

根据你的表格,"Thrikandiyur宿舍“只与"2018-10”有关系。因此,对于您的输出来说,这一行是:"Thrikandiyur row 2018-11“,您应该在表b中有这样的引用:

代码语言:javascript
复制
id  ||   paying_month  ||   parent_category  
6   ||    2018-11      ||    6 

您所使用的条件只是日期间隔。为了获得不重复的输出,您应该在语句中添加一个“不同的”。如下所示:

代码语言:javascript
复制
$query=$this->db->query("SELECT DISTINCT * from tableA A left join tableB B  on 
A.category_id = B.parent_category and B.paying_month BETWEEN '{$from}' AND 
'{$to}' ");

另一种解决方案是使用"GROUP“:

代码语言:javascript
复制
$query=$this->db->query("SELECT * from tableA A left join tableB B  on 
A.category_id = B.parent_category and B.paying_month BETWEEN '{$from}' AND 
'{$to}' GROUP BY B.parent_category");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52606881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档