为了账号安全,请及时绑定邮箱和手机立即绑定

萌新求教!这类例子中,Mysql多表关联要如何更合理?感激不尽

萌新求教!这类例子中,Mysql多表关联要如何更合理?感激不尽

侃侃无极 2019-07-28 12:17:28
现在有三个主要表:tableA:idtableB:ida_id(foreignkey)tableB_C_ref:b_idc_idtableC:id逻辑关系简单:A对B为一对多,B对C是多对多。需求是这样:给一个A.id的列表ids:[id1,id2...],输出一个类似excel的结果,结果要求:每一行是一条A的记录,加两格额外信息:有一个格子需要包含"与当前A相关的所有B条目"有一个格子需要包含"与刚刚的所有B条目相关的所有C,且C需要按照B分好组"按照树形结构描述,就是要找出这样的结果:.├──A│  ├──B1│  │  ├──C1│  │  ├──C2│  │  └──C3│  └──B2│  ├──C4│  └──C5第一步没问题,SELECT*FROMBWHEREB.a_id=A.idANDA.idIN(ids)但是第二步就不知道如何实现了,我只能用第一步拿到的B的id(是一个数组)再一个一个的重复类似的过程去找出它们分别对应的C,然后进行拼装。只能说效率实在太差,我想请教的是,如果不这样手动重复的话,是否有别的更高效的方法(join/子查询之类的?)
查看完整描述

2 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

如果额外的格子里面只需要B或C的一个字段,那么可以用group_concat,但是如果要多个或者所有字段,要么一次性把所有'与当前A相关的所有B条目''与刚刚的所有B条目相关的所有C'全部查出来代码里面去拼,要么一次一次连数据库去查
                            
查看完整回答
反对 回复 2019-07-28
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信