以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请对SQL厉害的大神教授一下复杂SQL的一些疑点 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65985) |
-- 作者:打错潇洒 -- 发布时间:2015/3/27 8:39:00 -- 请对SQL厉害的大神教授一下复杂SQL的一些疑点 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编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2015/3/27 9:05:00 -- 呵呵,这个您可能在专业的sql论坛问比较好,那里专家多。 |
-- 作者:有点甜 -- 发布时间:2015/3/27 9:10:00 -- 这段sql的意思,就是几个表关联起来,然后取出各个表某列的值啊。
如果不想写复杂的sql语句,就应该允许适当的冗余,也就是保存别表的字段 |
-- 作者:jspta -- 发布时间: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多表的关联 多表关联复杂度确实有,但表结构设计的好,可以降低很多维护成本,特别是数据冗余。 狐表在这方面有什么好的建议与方法 尽量降低维护度 做成视图,当成查询表调用即可 |