我有 3 张桌子。A,B,C。A 与 B 一对多。 B 与 C 一对多。
表中的数据是,
TABLE A
id
10
15
TABLE B
id firstName AandB_Relation_Key
55 Abc 10
66 Pqr 10
77 xyz 10
88 ddd 15
TABLE C
id phone_no CandB_Relation_key
41 44444 77
42 55555 77
43 66666 77
44 88888 66
我想在单个查询中根据表 A 中的 id 从表 C 中检索数据,这样
如果表 B 在表 C 中有相关记录,我想显示来自 B 和 C 的记录,否则只显示来自表 B 的记录(即这里 firstName "xyz" 有多个电话号码,所以我将显示 xyz = 44444,55555,66666, ddd没有电话所以只有ddd)
目前我正在做,
a) 从表 B 中选择所有 id,其中 AandB_Relation_Key=id from Table A // 它返回表 B 中的所有 id 与表 A 中的 id
b)然后迭代所有id,从表C中对每个id进行计数,从表C中选择count(*),其中id=从a中检索到的id
c) 如果 count > 0 从表 B,C 中选择 firstName,phoneNo
d) 否则从表 B 中选择名字
谢谢。