外键为空且为查询条件是恐怖的事情

--两个截然不同
SELECT    isnull(max(ti_goods_count)- sum(isnull(sl_count,0)),0) as ti_goods_count,  isnull(max(ti_goods_weight)-sum(isnull(sl_weight,0)),0) as ti_goods_weight, isnull(max(ti_goods_body)- sum(isnull(sl_body,0)),0) as ti_goods_body, isnull(max(ti_prepay_price)- sum(isnull(sl_prepay_price,0)),0) as ti_prepay_price,  isnull(max(ti_return_price)-sum(isnull(sl_return_price,0)),0) as ti_return_price, isnull(max(ti_arrive_price)- sum(isnull(sl_arrive_price,0)),0) as ti_arrive_price, isnull(max(ti_month_price)- sum(isnull(sl_month_price,0)),0) as ti_month_price, isnull(max(ti_sum_price)- sum(isnull(sl_sum_price,0)),0) as ti_sum_price, isnull(max(ti_back_is_price)- sum(isnull(sl_isback,0)),0) as ti_back_is_price, isnull(max(ti_back_isnot_price)- sum(isnull(sl_notback,0)),0) as ti_back_isnot_price, 
                      isnull(max(ti_back_price)- sum(isnull(sl_back_price,0)),0) as ti_back_price
FROM         T_SEND_LIST right join t_ticket_info on ti_id = sl_ti_id   where sl_ti_id=2317
--------------------------------
SELECT    isnull(max(ti_goods_count)- sum(isnull(sl_count,0)),0) as ti_goods_count,  isnull(max(ti_goods_weight)-sum(isnull(sl_weight,0)),0) as ti_goods_weight, isnull(max(ti_goods_body)- sum(isnull(sl_body,0)),0) as ti_goods_body, isnull(max(ti_prepay_price)- sum(isnull(sl_prepay_price,0)),0) as ti_prepay_price,  isnull(max(ti_return_price)-sum(isnull(sl_return_price,0)),0) as ti_return_price, isnull(max(ti_arrive_price)- sum(isnull(sl_arrive_price,0)),0) as ti_arrive_price, isnull(max(ti_month_price)- sum(isnull(sl_month_price,0)),0) as ti_month_price, isnull(max(ti_sum_price)- sum(isnull(sl_sum_price,0)),0) as ti_sum_price, isnull(max(ti_back_is_price)- sum(isnull(sl_isback,0)),0) as ti_back_is_price, isnull(max(ti_back_isnot_price)- sum(isnull(sl_notback,0)),0) as ti_back_isnot_price, 
                      isnull(max(ti_back_price)- sum(isnull(sl_back_price,0)),0) as ti_back_price
FROM         T_SEND_LIST right join t_ticket_info on ti_id = sl_ti_id   where ti_id=2317

如果未作发货则,第一条语句会有数据,第二条将没有数据,虽然是相同的意思ti_id等同于sl_ti_id,但外键为空时就有意外了。!!

posted @ 2012-04-17 10:29  popoxxll  阅读(644)  评论(0编辑  收藏  举报