现在有三个主要表: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'全部查出来代码里面去拼,要么一次一次连数据库去查
添加回答
举报
0/150
提交
取消