
SQL 题目 跪求解答
(product)(customer)(order)idnamepricetypeacidacnameacadressacididamount1冰箱1500家电1张三北京...
(product) (customer) (order)
id name price type acid acname acadress acid id amount
1 冰箱 1500 家电 1 张三 北京 1 1 12
2 苹果 3 水果 2 李四 上海 3 1 1
3 电视 600.0家电 3 王五 天津 2 2 3
4 李子 7 水果 1 3 1
5 台灯 20.0 家电 1 2 4
3 5 4
(1)按照逻辑关系 这三张表的主外键关系和约束如何设置?
(2)求取没有买过电视的顾客名称及地址
(3)求取每个顾客再购买水果和家电上分别花了多少钱(要求查询结果为每个顾客一行)
(4)求取销售额最少的前三种商品名称以及成交总额 展开
id name price type acid acname acadress acid id amount
1 冰箱 1500 家电 1 张三 北京 1 1 12
2 苹果 3 水果 2 李四 上海 3 1 1
3 电视 600.0家电 3 王五 天津 2 2 3
4 李子 7 水果 1 3 1
5 台灯 20.0 家电 1 2 4
3 5 4
(1)按照逻辑关系 这三张表的主外键关系和约束如何设置?
(2)求取没有买过电视的顾客名称及地址
(3)求取每个顾客再购买水果和家电上分别花了多少钱(要求查询结果为每个顾客一行)
(4)求取销售额最少的前三种商品名称以及成交总额 展开
2个回答
2012-03-10
展开全部
1、主键:(1) id (2)acid (3) acid,id 共同作主键(有主键约束就行了)
2、没买过电视的顾客名称及地址:
select a.acname,a.acadress from customer a inner join order b on a.acid=b.acid inner join product c on b.id=c.id where a.acid not in (
select acid from order where id in (select id from product where name='电视')
)
3、由于要做到一行里,这问题要写自定义函数,我给逻辑(关联可以用第2问的),你自己写:
在函数中查询出每个顾客所买的 商品、金额,这里有顾客、商品、金额;再用循环取数,以商品为字段,存放金额。(可参考“行转列”的函数)
4、这个直接用数量*单价,然后排序 select top 3 from (…) order by amount*price 默认升序的。
2、没买过电视的顾客名称及地址:
select a.acname,a.acadress from customer a inner join order b on a.acid=b.acid inner join product c on b.id=c.id where a.acid not in (
select acid from order where id in (select id from product where name='电视')
)
3、由于要做到一行里,这问题要写自定义函数,我给逻辑(关联可以用第2问的),你自己写:
在函数中查询出每个顾客所买的 商品、金额,这里有顾客、商品、金额;再用循环取数,以商品为字段,存放金额。(可参考“行转列”的函数)
4、这个直接用数量*单价,然后排序 select top 3 from (…) order by amount*price 默认升序的。

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询