--大概思路:如果是从主表一直left join 子表 ,distinct业务层次最底层的子表ID
--wz_xqjhd 物资需求计划单
--wz_zbbd 物资招标标段
--WZ_ZBBDQB 招标标段签报
--wz_yzbfa 物资预中标方案
--wz_qbzb 物资签报主表
--wz_zbjg 物资中标结果
--jhtm 计划条目
--jhtmfp 计划条目分配
--以上表关系 :wz_xqjhd(1:n)wz_zbbd wz_xqjhd(1:n) wz_zbjg
-- wz_yzbfa(1:n)wz_zbbd wz_qbzb(1:n)WZ_ZBBDQB wz_zbbd(1:n)WZ_ZBBDQB WZ_ZBBDQB相当于中间表
-- wz_xqjhd(1:n) wz_zbjg
-- jhtmfp 为wz_jhtm与wz_zbbd的中间表
-- wz_jhtm 条目一层 相当于是业务的最低层 这个时候可以distinct去过滤最底层数据
select distinct(jhtm.jhtm_id) ,xqjhd.*,zbbd.*,jhtm.* from wz_xqjhd xqjhd
left join wz_zbbd zbbd on zbbd.xqjhd_id = xqjhd.xqjhd_id
left join WZ_ZBBDQB zbbdqb on zbbdqb.zbbd_id=zbbd.zbbd_id
left join wz_yzbfa yzbfa on yzbfa.yzbfa_id=zbbd.yzbfa_id
left join wz_qbzb qbzb on qbzb.qb_id=zbbdqb.dbqb_id
left join wz_zbjg zbjg on zbjg.Xqjhd_Id=xqjhd.xqjhd_id
left join wz_jhtm jhtm on jhtm.xqjhd_id=xqjhd.xqjhd_id
left join wz_jhtmfp jhtmfp on jhtmfp.jhtm_id=jhtm.jhtm_id and jhtmfp.zbbd_id=zbbd.zbbd_id;
以上是从主表关联子表 一层一层来的,下面是从子表开始:
select distinct(jhtm.jhtm_id) ,xqjhd.*,zbbd.*,jhtm.* from wz_jhtm jhtm
left join wz_jhtmfp jhtmfp on jhtmfp.jhtm_id=jhtm.jhtm_id
left join wz_zbbd zbbd on jhtmfp.zbbd_id = zbbd.zbbd_id
left join WZ_ZBBDQB zbbdqb on zbbdqb.zbbd_id=zbbd.zbbd_id
left join wz_yzbfa yzbfa on yzbfa.yzbfa_id=zbbd.yzbfa_id
left join wz_qbzb qbzb on qbzb.qb_id=zbbdqb.dbqb_id
left join wz_xqjhd xqjhd on xqjhd.xqjhd_id=jhtm.xqjhd_id
left join wz_zbjg zbjg on zbjg.Xqjhd_Id=xqjhd.xqjhd_id
从主表开始left join还是子表开始,具体得看业务逻辑,参考的具体层次
posted on 2011-11-03 10:52
孤飞燕 阅读(4585)
评论(0) 编辑 收藏 所属分类:
数据库