sql的题目
职工表:emp1职工号仓库号姓名性别工资字段名:empnobnoenamesexsal仓库表:base仓库号城市面积创建时间字段名:bnobcitymmcreatedat...
职工表:emp1
职工号 仓库号 姓名 性别 工资
字段名: empno bno ename sex sal
仓库表:base
仓库号 城市 面积 创建时间
字段名: bno bcity mm createdate
订购单表:order1
供应商号 职工号 订购单号 订购日期 金额
字段名: sno empno ono odate money
-------------------------------------------------------
我这样做,为什么会显示出一百多行来呢??
----------------------------------------
显示城市不为空,工资在1200~2100之间,销售金额不在8000~12000之间的职工信息
SELECT emp1.empno,emp1.bno,emp1.ename,emp1.sex,emp1.sal
FROM emp1,order1,base
WHERE emp1.bno=base.bno
AND emp1.sal<1200 OR emp1.sal>2100
AND emp1.empno =order1.empno
AND order1.money<8000 OR order1.money>12000
是重复显示的 展开
职工号 仓库号 姓名 性别 工资
字段名: empno bno ename sex sal
仓库表:base
仓库号 城市 面积 创建时间
字段名: bno bcity mm createdate
订购单表:order1
供应商号 职工号 订购单号 订购日期 金额
字段名: sno empno ono odate money
-------------------------------------------------------
我这样做,为什么会显示出一百多行来呢??
----------------------------------------
显示城市不为空,工资在1200~2100之间,销售金额不在8000~12000之间的职工信息
SELECT emp1.empno,emp1.bno,emp1.ename,emp1.sex,emp1.sal
FROM emp1,order1,base
WHERE emp1.bno=base.bno
AND emp1.sal<1200 OR emp1.sal>2100
AND emp1.empno =order1.empno
AND order1.money<8000 OR order1.money>12000
是重复显示的 展开
1个回答
展开全部
销售额应该是汇总数,而你是提取的单笔订单,所以多笔订单的会有重复,另外你遗漏了诚实非空的条件,最后你的OR条件没有用括号也会出错,修改如下:
SELECT emp1.empno,emp1.bno,emp1.ename,emp1.sex,emp1.sal, sum(money)
FROM emp1,order1,base
WHERE emp1.bno=base.bno AND base.bcity is not null
AND emp1.sal BETWEEN 1200 AND 2100
AND emp1.empno =order1.empno
GROUP BY 1,2,3,4,5 HAVING sum(money)<8000 OR sum(money)>12000
SELECT emp1.empno,emp1.bno,emp1.ename,emp1.sex,emp1.sal, sum(money)
FROM emp1,order1,base
WHERE emp1.bno=base.bno AND base.bcity is not null
AND emp1.sal BETWEEN 1200 AND 2100
AND emp1.empno =order1.empno
GROUP BY 1,2,3,4,5 HAVING sum(money)<8000 OR sum(money)>12000
七鑫易维信息技术
2024-09-02 广告
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分...
点击进入详情页
本回答由七鑫易维信息技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询