首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这条嵌套话语为什么报错

2012-08-24 
这条嵌套语句为什么报错SELECT * FROM 客户表 WHERE(SELECT 客户编号 FROM 订单主表 WHERE(SELECT 订单编

这条嵌套语句为什么报错
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 客户编号

[解决办法]

SQL code
--trySELECT * FROM 客户表 A  LEFT JOIN       订单主表 B  ON B.客户编号=A.客户编号LEFT JOIN       订单明细表 C  ON  B.订单编号=C.订单编号   WHERE       C.商品名称='旺旺雪饼'GROUP BY A.客户编号
[解决办法]
SQL code
SELECT * FROM 客户表 WHERE   --此处要指定  '客户编号 in'  (SELECT 客户编号 FROM 订单主表 WHERE   --此处要指定'订单编号 IN'  (    SELECT 订单编号  FROM 订单明细表 WHERE    商品名称='旺旺雪饼')) GROUP BY 客户编号--你缺少了指定,默认指定了非布尔类型的表达式,导致查询报错
[解决办法]
万恶的404
[解决办法]
SQL code
SELECT * FROM 客户表 WHERE   客户编号 IN --此处要指定  '客户编号 IN'  (SELECT 客户编号 FROM 订单主表 WHERE 订单编号 IN  --此处要指定'订单编号 IN'  (    SELECT 订单编号  FROM 订单明细表 WHERE    商品名称='旺旺雪饼')) GROUP BY 客户编号
[解决办法]
嵌套时候需要加别名,建议使用inner join。

SELECT * FROM 客户表 WHERE
(SELECT 客户编号 FROM 订单主表 WHERE
(
SELECT 订单编号
FROM 订单明细表 WHERE
商品名称='旺旺雪饼')a )b GROUP BY 客户编号


[解决办法]
SQL code
SELECT * FROM 客户表 WHERE    (     SELECT 客户编号 FROM 订单主表 WHERE           (            SELECT 订单编号          FROM 订单明细表 WHERE            商品名称='旺旺雪饼') AS a    ) AS b GROUP BY 客户编号这种嵌套查询需要使用别名,as可以省略哈
[解决办法]
SQL code
where后面直接是括号(子查询)了。。。。SELECT * FROM 客户表 WHERE 客户编号 in(SELECT 客户编号 FROM 订单主表 WHERE 订单编号 in    (     SELECT 订单编号  FROM 订单明细表 WHERE     商品名称='旺旺雪饼') ) GROUP BY 客户编号in后面的子查询,是不能带别名的
[解决办法]
SQL code
SELECT * FROM 客户表 WHERE  客户编号 in(SELECT 客户编号 FROM 订单主表 WHERE    订单编号 in (        SELECT 订单编号      FROM 订单明细表 WHERE        商品名称='旺旺雪饼'    )) GROUP BY 客户编号 

热点排行
Bad Request.