APIJSON icon indicating copy to clipboard operation
APIJSON copied to clipboard

[Bug] 多表联查的问题

Open yjfgh5t opened this issue 1 year ago • 2 comments

APIJSON Version/APIJSON 版本号

6.2.0

Database Type & Version/数据库类型及版本号

MySql 5.7

Environment/环境信息

- JDK/基础库: 17
- OS/系统: Windows 11

APIAuto Screenshots/APIAuto 请求与结果完整截屏

有A、B两张表,我想实现 select A.,B. from A left join A.id = B.id where A.state=1 and B.state=1 ,请问如何实现啊!

Current Behavior/问题描述

有A、B两张表,我想实现  
select A.*,B.* from A 
left join A on A.id = B.id 
where A.state=1 and B.state=1 ,
请问如何实现啊!

现在使用left join 在左表上加查询条件,条件一直在子表里面 
select A.*,C.* from A 
left join (select B.* from B where B.state=1) as C on  A.id = C.id 
where A.state=1
这样次查询条件,无法排除B表的条件

Expected Behavior/期望结果

期望使用jion < 表查询时能实现如下Sql
select A.*,B.* from A 
left join A on A.id = B.id 
where A.state=1 and B.state=1

Any additional comments?/其它补充说明?

No response

yjfgh5t avatar Sep 21 '24 16:09 yjfgh5t

结果不一样吗?提前过滤性能还更好。 如果非要把副表 B 的条件后置处理,也可以放到 JOIN ON 上 把 B 的条件条件放到 ON 上

"join":{
   "</B":{
     "state":1
   }
}

https://github.com/Tencent/APIJSON/blob/master/Document.md#32-%E5%8A%9F%E8%83%BD%E7%AC%A6 image

TommyLemon avatar Sep 22 '24 05:09 TommyLemon

select A.,B. from A left join A on A.id = B.id where A.state=1 and B.state=1 条件后置,这个条件可以过滤,join后的结果集。很有用的。特别是 页面有多个条件需要过滤的时候。

wz11wz avatar Jun 28 '25 07:06 wz11wz