日期:2014-05-18  浏览次数:20704 次

给客户交货时遇到错误!急急急急急急急急急急急!!!!求高手指点(没有多少分了,请谅解)
小弟有一个麻烦,恳求高手指点
String   sql= "select     OrderForm.OrderFormId,OrderForm.OrderFormTime,orderform.DeliverDate   from   OrderForm,customer "
+ "   where   customer.CustomerId= ' "+customerinfo.CustomerId+ " '   and   customer.CustomerId=Orderform.CustomerId   "
+ "and   OrderFormId   not   in   (select   OrderFormId       from   ShoppingList     where   IfCheck=1   group   by   OrderFormId) ";
这个语句是个包含子查询的sql语句,小弟在mysql5.0下没有问题,但由于要上传到
服务器上,服务器上的版本是4.0.2,不支持子查询,所以恳求高手将以上sql改成两句单查询,可能
要用到while(rs.next())等

我要实现的功能就是一个订单可以对应多道菜,如果有一道菜开始做了,那么这个订单就无法退订了
  以上语句意思是选出那些每道菜都没有开始做(ifcheck=1表示该菜开始做了)的订单,因为这些订单可以让客户退订,
OrderForm.OrderFormId   订单表中的订单ID
OrderForm.OrderFormTime   订购时间
orderform.DeliverDate   送餐时间
OrderForm   订单表
customer   客户信息表
customerinfo.CustomerId   客户的id号,该信息放在类customerinfo中
ShoppingList   快餐订购表,该表中每个订单可以对应多道菜
ifcheck=1   表示订单中的一道开始做了   ,0就表示没有开始做
select   OrderFormId       from   ShoppingList     where   IfCheck=1   group   by   OrderFormId就表示
选出那些不可以退订的订单号

------解决方案--------------------
把服务器上的mysql也换成mysql5.0不就行了.
------解决方案--------------------
String commandSQL = "select OrderFormId from ShoppingList where IfCheck=1 group by OrderFormId "
excuteQuery(commandSQL)
String noOrder = " ";
while(rs.next()) {
noOrder += noOrder + " ' " + rs.getString( "OrderFormId ") + " ', " ;
}

String sql= "select OrderForm.OrderFormId,OrderForm.OrderFormTime,orderform.DeliverDate from OrderForm,customer "
+ " where customer.CustomerId= ' "+customerinfo.CustomerId+ " ' and customer.CustomerId=Orderform.CustomerId "
+ "and OrderFormId not in (noOrder.substirng(0,noOrder.length - 1)) ";
不知道能不能满足你