求助oracle和sqlserver数据库高手,左连接查询问题

问题如下:1、表A、表B、表C三张表。表A字段IDNAME表B字段IDNAMEAiD表C字段IDNAMEAIDAID为对应的表A的ID2、对应关系为:表A和表B一对多,表... 问题如下:
1、表A 、表B 、 表C三张表。
表A 字段 ID NAME
表B字段 ID NAME AiD
表C字段 ID NAME AID
AID为对应的表A的ID
2、对应关系为:表A和表B 一对多,表A和表C一对多
3、表A、表B、表C都是十万至百万级的数据量
4、实现效果列:
A.ID A.NAME B.ID B.NAME C.ID C.NAME

数据库查询语句该如何写才能查询出正确的结果,最好用到左连接。查询时间越短越好

另外小弟的左连接是看不明白,最好有说明,谢谢各位大神
展开
 我来答
yyfromcn
2013-12-17 · 超过26用户采纳过TA的回答
知道答主
回答量:60
采纳率:100%
帮助的人:42.6万
展开全部
你之所以A显示多个是因为B或C有多个对应A的相同AID但内容不相同的情况
如 A: 1,ab
B: 1,bc,1
2,bd,1
C: 1,cd,1
2,ce,1
3,cf,1
这样为了全部显示B和C的内容,必然要重复显示A的AID
你的所谓只用左连接本身就有问题,首先你不会确定A、B、C的记录大小,用左连接必然是错的结果,你可以把问题再描述清楚,想要的结果写出来,这样才能解决问题
百度网友f2b7b2a
2013-12-14 · TA获得超过702个赞
知道小有建树答主
回答量:342
采纳率:100%
帮助的人:296万
展开全部
Select A.ID,A.NAME, B.ID,B.NAME,C.ID,C.NAME
From A
Left Join B
On A.ID=B.AID
Left Join C
On A.ID=C.AID

第一个Left Join:
LEFT JOIN 关键字会从左表 (A) 那里返回所有的行,即使在右表 (B) 中没有匹配的行。
第二个Left Join:
LEFT JOIN 关键字会从左表 (A) 那里返回所有的行,即使在右表 (C) 中没有匹配的行。

若数据比较多,建议B,C表建立关于字段AID的索引
追问
我查出来的数据A.ID会有多个,但是A.ID是唯一的啊。
用distinct去重A.ID也不行。
是不是我理解有错误,一有连接方式我就犯晕
追答
你给出一些数据作为例子,然后你想要什么结果。
我然后再帮你看看。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式