这类例子中,Mysql多表关联要如何更合理?求解答!

现在有三个主要表:
tableA:
id
tableB:
id
a_id(foreignkey)
tableB_C_ref:
b_id
c_id
tableC:
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/子查询之类的?)
隔江千里
浏览 278回答 2
2回答

梦里花落0921

如果额外的格子里面只需要B或C的一个字段,那么可以用group_concat,但是如果要多个或者所有字段,要么一次性把所有'与当前A相关的所有B条目''与刚刚的所有B条目相关的所有C'全部查出来代码里面去拼,要么一次一次连数据库去查
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript