日期:2014-05-17  浏览次数:20416 次

这条嵌套语句为什么报错
SELECT * FROM 客户表 WHERE 
                     (SELECT 客户编号 FROM 订单主表 WHERE  
                                                    ( 
                                                      SELECT 订单编号
                                                      FROM 订单明细表 WHERE 
                                                      商品名称='旺旺雪饼')) GROUP BY 客户编号




上面语句,要求查询订购了“旺旺雪饼”的所有客户的信息,我的思路是,由旺旺雪饼得到订单编号,由订单编号得到客户编号,由客户编号查询客户信息

为什么报错:
“在应使用条件的上下文(在 ')' 附近)中指定了非布尔类型的表达式”

------解决方案--------------------
SELECT 客户编号 FROM 客户表 
left join  订单主表  on 客户表.客户编号=订单主表.客户编号
left join 订单明细表  on 订单主表.订单编号=订单主表.订单编号
where 订单明细表.商品名称='旺旺雪饼'
group by 客户编号
------解决方案--------------------
SELECT * FROM 客户表 WHERE 客户编号 IN 
  (SELECT 客户编号 FROM 订单主表 WHERE 订单编号 IN  
  (  
  SELECT 订单编号
  FROM 订单明细表 WHERE  
  商品名称='旺旺雪饼')) GROUP BY 客户编号