Tencent / APIJSON

🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码,前端(客户端) 定制返回 JSON 的数据和结构 🏆 Real-Time coding-free, powerful and secure ORM 🚀 providing APIs and Docs without coding by Backend, and the returned JSON of API can be customized by Frontend(Client) users
http://apijson.cn
Other
17.29k stars 2.16k forks source link

[Bug] 多表联查的问题 #766

Open yjfgh5t opened 2 months ago

yjfgh5t commented 2 months ago

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

TommyLemon commented 2 months ago

结果不一样吗?提前过滤性能还更好。 如果非要把副表 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