急: 关于Oracle 连接问题!
最后一行 AND nvl(e.available_qty(+),0) > 0;这样写与
AND nvl(e.available_qty,0) > 0 这样有什么不同,结果有区别吗?
c.req_rep_no = e.req_rep_no(+)
c.req_no = e.req_no(+)
c.req_seq = e.req_seq(+)
nvl(e.available_qty(+),0) > 0;
这样是否相当于c left join e on(c.req_rep_no = e.req_rep_no and
c.req_no = e.req_no and c.req_seq = e.req_seq and e.available_qty > 0)
下面的整个语句,如果 e 里没数据,只要其他表符合条件有相应数据,count(*)还是有可能> 0的。对吗?
SELECT count(*)
INTO :ll_cnt
FROM v_sal_order_qty e, tm_sal_req_rep a, tm_sal_req_mst b, tm_sal_req_dtl c
WHERE a.com_code = b.com_code
AND a.req_rep_no = b.req_rep_no
AND b.com_code = c.com_code
AND b.req_rep_no = c.req_rep_no
AND b.req_no = c.req_no
AND c.req_rep_no = e.req_rep_no(+)
AND c.req_no = e.req_no(+)
AND c.req_seq = e.req_seq(+)
AND b.com_code = :gs_com_code
AND b.div_code = :as_div_code
AND b.cust_type = :as_cust_type
AND b.cust_cd = :as_cust_cd
AND c.model = :as_model
AND c.suffix = :as_suffix
AND :as_valid_date_to BETWEEN a.valid_date_from AND a.valid_date_to
AND nvl(c.delete_flag, 'N ') = 'N '
AND nvl(c.close_flag, 'N ') = 'N '
AND a.approve_status <> 'CNCL '
AND nvl(e.available_qty(+),0) > 0;
[解决办法]
如果没有(+)号..E里面没有数据的话count(*)肯定为0,
如果有(+)号..E里面没有数据的话count(*)可能是> 0的
