Foxtable(狐表)用户栏目专家坐堂 → 请对SQL厉害的大神教授一下复杂SQL的一些疑点


  共有3233人关注过本帖树形打印复制链接

主题:请对SQL厉害的大神教授一下复杂SQL的一些疑点

帅哥哟,离线,有人找我吗?
打错潇洒
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:568 积分:6437 威望:0 精华:2 注册:2012/12/23 8:21:00
请对SQL厉害的大神教授一下复杂SQL的一些疑点  发帖心情 Post By:2015/3/27 8:39:00 [只看该作者]

select a.FID,
       a.fnumber as customerNumber,
       a.fname_l2 as customerName,
       son.fname_l2 as personname
  f rom t_bd_customer a
  left join T_BD_Region on T_BD_Region.fid = a.fregionid
  left join t_bd_customersaleinfo fo on fo.fcustomerid = a.fid
  left join t_bd_customersaler ler on ler.fcustomersaleid = fo.fid
  left join t_bd_person son on son.fid = ler.fpersonid
 where 1 = 1
   and (a.FBrowseGroupID = 'jPJnAQEUEADgAc3iwKgCZ3olaaI=')
   and a.fname_l2 not like '%成品箱%'
 order by a.fnumber

(请问 大神们 上述SQL 什么意思)

以上的SQL 比较复杂 


在复杂业务的情况下 复杂的SQL会引发难以维护的结果 N多表的关联 

狐表在这方面有什么好的建议与方法  尽量降低维护度  


[此贴子已经被作者于2015/3/27 8:40:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/3/27 9:05:00 [只看该作者]

呵呵,这个您可能在专业的sql论坛问比较好,那里专家多。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/27 9:10:00 [只看该作者]

 这段sql的意思,就是几个表关联起来,然后取出各个表某列的值啊。

 

 如果不想写复杂的sql语句,就应该允许适当的冗余,也就是保存别表的字段


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/3/27 11:00:00 [只看该作者]

以下是引用打错潇洒在2015/3/27 8:39:00的发言:
select a.FID,
       a.fnumber as customerNumber,
       a.fname_l2 as customerName,
       son.fname_l2 as personname
  f rom t_bd_customer a
  left join T_BD_Region on T_BD_Region.fid = a.fregionid
  left join t_bd_customersaleinfo fo on fo.fcustomerid = a.fid
  left join t_bd_customersaler ler on ler.fcustomersaleid = fo.fid
  left join t_bd_person son on son.fid = ler.fpersonid
 where 1 = 1
   and (a.FBrowseGroupID = 'jPJnAQEUEADgAc3iwKgCZ3olaaI=')
   and a.fname_l2 not like '%成品箱%'
 order by a.fnumber

(请问 大神们 上述SQL 什么意思)

以上的SQL 比较复杂 
其实以上SQL已经算简单了,只是简单的表间关联,目的就是为了获得  son.fname_l2 as personname 这列。
因为是外连接,防止了不存在关联时,没有显示t_bd_customer a 表的数据。


在复杂业务的情况下 复杂的SQL会引发难以维护的结果 N多表的关联 

多表关联复杂度确实有,但表结构设计的好,可以降低很多维护成本,特别是数据冗余。

狐表在这方面有什么好的建议与方法  尽量降低维护度  
做成视图,当成查询表调用即可



 回到顶部