public JDBCResultSet getOrderInfo(String sdate,String edate,String o_order_type,String o_assign_flag,String o_process_flag,String o_time_flag,String todaydate)
{
StringBuffer error=new StringBuffer();
String sqlStr = "select a.Order_id,a.Cust_name,a.Brh_id,a.Order_date,decode(a.Order_type,'1','信用卡','2','理财业务','3','信贷业务') ot,"
+ "decode(a.Assign_flag,'0','未分派','1','已分派','2','已办结') af,b.V_USER_NM,"
+ "a.Assign_date,a.Process_deadline,a.Process_request,decode(a.Process_flag,'0','未处理','1','洽谈中','2','已促成','3','未促成') pf,a.Process_dtl "
+ " from t_busi_order_dtl a ,sys_user b"
+ " where a.Assign_opr_id=b.V_USER_ID";
if(!sdate.equals(""))
sqlStr = sqlStr + " and a.Order_date>='"+sdate+"'";
if(!edate.equals(""))
sqlStr = sqlStr + " and a.Order_date<='"+edate+"'";
if(!o_order_type.equals(""))
sqlStr = sqlStr + " and a.Order_type='"+o_order_type+"'";
if(!o_assign_flag.equals(""))
sqlStr = sqlStr + " and a.Assign_flag='"+o_assign_flag+"'";
if(!o_process_flag.equals(""))
sqlStr = sqlStr + " and a.Process_flag='"+o_process_flag+"'";
if(!o_time_flag.equals(""))
{ if(o_time_flag.equals("0"))
sqlStr = sqlStr + " and a.Process_deadline < '"+todaydate+"' ";
else if(o_time_flag.equals("1"))
sqlStr = sqlStr + " and a.Process_deadline > '"+todaydate+"' ";
}
sqlStr = sqlStr + " order by a.Order_date,a.Process_deadline,a.Order_type" ;
JDBCResultSet rs = RunQry(sqlStr, error);
if (!error.toString().equals(""))
{
System.out.println(error.toString());
return null;
}
return rs;
}
关键就是红色的那些。这就2个表连接查询下,靠查询a表中Assign_opr_id字段等于b表中的V_USER_ID字段,然后查询出
b.V_USER_NM的值。
现在问题就是,如果a表中的Assign_opr_id为空的话,是不是这句查询语句就有问题,查不出数据?
PS:Assign_opr_id是允许为空的,B表中基本都不为空
现在问题就是,如果让Assign_opr_id这个字段为空的时候也可以通过这条查询语句查询出来,那要怎么改呢?
在这里恐怕不适用,你得到的也只是空值而已
你把sql语句整理出来做个例子,描述下需求
这样看着有点难受..
但是这个都已经实现了,查询的数据主要都在a表,唯一的一个在b表中的v_user_nm,这个名称
然后问题就是Assign_opr_id与b.V_USER_ID 这2个字段的关联
B表中存放人员的编号b.V_USER_ID 和名称v_user_nm
a表的起初添加数据时,也注册页面时没有填数据到字段Assign_opr_id
在后台操作的时候,给新添加的记录,分配一个人员,就会把编号b.V_USER_ID 填上,这个不是现在关注的问题,
现在就是希望能查询返回数据,返回a表中的数据还有b表中v_user_nm这个字段,如果Assign_opr_id为空的话,那就不需要查B表了,页面上显示v_user_nm这个字段的地方,显示空的就行了
有Assign_opr_id值,那就把v_user_nm值返回
狂浪,你不是说Assign_opr_id为空关联这样不好么,现在只有靠他关联了,有什么方案可以参考?
where a.Assign_opr_id = b.V_USER_ID(+)
试试
新问题是什么?数据库里能运行,就是java的问题了吧?