关于数据库跨4表查询所需某一字段问题?

数据库关系如下图:
图片描述

我现在想要从表A中根据个别条件查询符合条件的数据,并且需要关联表D中的DName字段的值,请问如何写SQL语句呢?我写的如下:

`select A.*,DName
from A
        left join (select distinct AID,CID from B) a on a.AID=A.AID
        left join (select DID,CID from C) b on b.CID=a.CID
        left join D on D.DID=b.DID
        where 条件`

这样写当我B表中每一个AID对应一条数据时,没问题,但是如果B表中一个AID对应多条的时候,就会有重复的出现,请问该如何完善一下?

阅读 3.9k
2 个回答
select
    A.AID, D.DName
from
    A,B,C,D
where
    A.AID=B.AID
    and B.CID=C.CID
    and C.DID=D.DID
group by
    A.AID, D.DName

不管是一对多还是多对一你都要搞清楚你的需求是什么
要取出一个AID对应的DNAME,有非一对一情况肯定是会造成AID和DNAME不对等的情况的
这时候你就要确认你要取什么样的结果了
业务逻辑混乱,需求不清,这sql没法写

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题