mysql - oracle 多表查询问题-笛卡儿积过滤
巴扎黑
巴扎黑 2017-04-17 15:37:09
[MySQL讨论组]

问题如下:

查询出现笛卡儿积过滤的问题
例子: A B C D E Q表

select e.name,
       e.age,
       e.phone,
       q.something
  from a a,
       b b,
       c c,
       d d,
       e e,
       q q
  where a.id = 'zhejiushiyige id' 
  and b.id = a.bid
  and c.id = b.cid
  and d.id = c.did
  and e.id = d.eid
  and q.aid = a.id

就是表e是从a开始一级一级比较下来的,最终得到的e的结果是正确的,但是q的结果会出现两次,并且q只跟a有关联,请问怎么查询才能解决这个问题呢?

巴扎黑
巴扎黑

全部回复(1)
巴扎黑

q表和a表是一对多的关系,如果q表的结果只想出一条,可以在关联前先把q表按照aid字段进行汇总,保证每个aid只有一条,如:

select e.name,
       e.age,
       e.phone,
       q.something
  from a a,
       b b,
       c c,
       d d,
       e e,
       (select aid, max(something))
       from q
       group by aid) table_q
  where a.id = 'zhejiushiyige id' 
  and b.id = a.bid
  and c.id = b.cid
  and d.id = c.did
  and e.id = d.eid
  and table_q.aid = a.id
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号