六个表联表查询遇到的问题,纠结中......求指点

再看我一眼 2014-05-13 05:30:02

SELECT
*
FROM
a
LEFT JOIN b ON a.id = b.a_id
LEFT JOIN c ON a.id = c.aa_id
LEFT JOIN d ON b.id = d.b_id
LEFT JOIN e ON b.id = e.b_id
LEFT JOIN f ON a.f_id = f.id


想要以a表为基础查出所有相关数据
a表和b表的关系是 b表一定有a_id并且a_id唯一并且a_id=a.id,但不是每个a表的id都在b表的a_id字段中
a表和c表的关系 与a表和b表的关系类似,区别是c表的aa_id字段不是唯一的,就是说a表的id可能在c表中有两个aa_id对应
d表和e表与a表没有直接关联,通过b表关联.而且d表的b_id和e表的b_id也不是唯一的
a表和f表的关系是 a表中有一个字段f_id对应f表的id字段,但是a表中可能有多条记录使用了相同的f_id

现在查出来的结果是, a表,b表的信息基本上正常, cde表的内容很多都没查出来
然后查出结果中有不少a表的信息重复出现比如a表的同一个id出现多条结果.

求破...
...全文
339 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
断点Bingo 2014-05-29
  • 打赏
  • 举报
回复
六个表。。。。 很有可能是设计的时候有些问题。。
  • 打赏
  • 举报
回复
六个表??本身设计思路没问题?
再看我一眼 2014-05-19
  • 打赏
  • 举报
回复
引用 2 楼 helloyou0 的回复:
“a表的信息重复出现”, 既然你a对c是一对多的关系,join肯定有重复, 如果不想要重复,可以group by, 不过你c表的数据准备如何显示?合并吗? [quote=引用 楼主 anyilaoliu 的回复:]

SELECT
	*
FROM
	a
LEFT JOIN b ON a.id = b.a_id
LEFT JOIN c ON a.id = c.aa_id
LEFT JOIN d ON b.id = d.b_id
LEFT JOIN e ON b.id = e.b_id
LEFT JOIN f ON a.f_id = f.id
想要以a表为基础查出所有相关数据 a表和b表的关系是 b表一定有a_id并且a_id唯一并且a_id=a.id,但不是每个a表的id都在b表的a_id字段中 a表和c表的关系 与a表和b表的关系类似,区别是c表的aa_id字段不是唯一的,就是说a表的id可能在c表中有两个aa_id对应 d表和e表与a表没有直接关联,通过b表关联.而且d表的b_id和e表的b_id也不是唯一的 a表和f表的关系是 a表中有一个字段f_id对应f表的id字段,但是a表中可能有多条记录使用了相同的f_id 现在查出来的结果是, a表,b表的信息基本上正常, cde表的内容很多都没查出来 然后查出结果中有不少a表的信息重复出现比如a表的同一个id出现多条结果. 求破...
[/quote] C表数据最好能选一条显示 比如 最新的一条
码无边 2014-05-15
  • 打赏
  • 举报
回复
重复数据distinct
helloyou0 2014-05-15
  • 打赏
  • 举报
回复
“a表的信息重复出现”, 既然你a对c是一对多的关系,join肯定有重复, 如果不想要重复,可以group by, 不过你c表的数据准备如何显示?合并吗?
引用 楼主 anyilaoliu 的回复:

SELECT
	*
FROM
	a
LEFT JOIN b ON a.id = b.a_id
LEFT JOIN c ON a.id = c.aa_id
LEFT JOIN d ON b.id = d.b_id
LEFT JOIN e ON b.id = e.b_id
LEFT JOIN f ON a.f_id = f.id
想要以a表为基础查出所有相关数据 a表和b表的关系是 b表一定有a_id并且a_id唯一并且a_id=a.id,但不是每个a表的id都在b表的a_id字段中 a表和c表的关系 与a表和b表的关系类似,区别是c表的aa_id字段不是唯一的,就是说a表的id可能在c表中有两个aa_id对应 d表和e表与a表没有直接关联,通过b表关联.而且d表的b_id和e表的b_id也不是唯一的 a表和f表的关系是 a表中有一个字段f_id对应f表的id字段,但是a表中可能有多条记录使用了相同的f_id 现在查出来的结果是, a表,b表的信息基本上正常, cde表的内容很多都没查出来 然后查出结果中有不少a表的信息重复出现比如a表的同一个id出现多条结果. 求破...
xuzuning 2014-05-13
  • 打赏
  • 举报
回复
SELECT
    *
FROM
  (select * from a LEFT JOIN (b, c, f) ON (a.id = b.a_id and a.id = c.aa_id and a.f_id = f.id)) t1
  LEFT JOIN 
  (select * from b LEFT JOIN (d, e) ON (b.id = d.b_id and b.id = e.b_id) t2
  ON t1.id = t2.a_id

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧