商品(编号,品名,进价,库存,售价,厂商编号) 顾客(卡号,姓名,电话,积分)厂商(编号,厂址,名称、电话)销售(顾客卡号,商品编号,数量,日期)根据上面基本表的信息完成下列查询。1 查询积分最高的顾客姓名2 查询销售数量1000以上的商品的厂商电话。3 查询生产商品5种以上的厂商信息。4 查询没有顾客买的商品信息。
时间: 2023-06-20 13:04:00 浏览: 201
1. 查询积分最高的顾客姓名:
```
SELECT 姓名 FROM 顾客 ORDER BY 积分 DESC LIMIT 1;
```
2. 查询销售数量1000以上的商品的厂商电话:
```
SELECT 厂商.电话 FROM 商品
JOIN 厂商 ON 商品.厂商编号 = 厂商.编号
JOIN 销售 ON 商品.编号 = 销售.商品编号
WHERE 销售.数量 >= 1000;
```
3. 查询生产商品5种以上的厂商信息:
```
SELECT 厂商.编号, 厂商.厂址, 厂商.名称, 厂商.电话 FROM 厂商
JOIN 商品 ON 厂商.编号 = 商品.厂商编号
GROUP BY 厂商.编号
HAVING COUNT(DISTINCT 商品.编号) >= 5;
```
4. 查询没有顾客买的商品信息:
```
SELECT 商品.编号, 商品.品名 FROM 商品
LEFT JOIN 销售 ON 商品.编号 = 销售.商品编号
WHERE 销售.商品编号 IS NULL;
```
相关问题
商品(编号,品名,进价,库存,售价,厂商编号) 顾客(卡号,姓名,电话,积分)厂商(编号,厂址,名称、电话)销售(顾客卡号,商品编号,数量,日期)根据上面基本表的信息定义一个存储过程,完成下面功能:入
库商品并更新库存信息,同时更新顾客积分信息。
存储过程如下:
```
CREATE PROCEDURE sp_add_stock_and_update_customer_points
@product_id INT,
@quantity INT,
@customer_id INT
AS
BEGIN
-- 获取商品信息
DECLARE @product_cost FLOAT, @product_price FLOAT, @manufacturer_id INT
SELECT @product_cost = 进价, @product_price = 售价, @manufacturer_id = 厂商编号 FROM 商品 WHERE 编号 = @product_id
-- 更新商品库存
UPDATE 商品 SET 库存 = 库存 + @quantity WHERE 编号 = @product_id
-- 计算顾客积分
DECLARE @points INT
SELECT @points = FLOOR(@product_price * @quantity / 10) FROM 商品 WHERE 编号 = @product_id
-- 更新顾客积分
UPDATE 顾客 SET 积分 = 积分 + @points WHERE 卡号 = @customer_id
END
```
该存储过程接收三个参数:商品编号、数量、顾客卡号。它首先获取商品的进价、售价和厂商编号,并将商品库存增加指定数量。然后,它根据购买的商品数量和单价计算顾客应该获得的积分,并将积分添加到顾客的积分中。
注意,这个存储过程只更新商品库存和顾客积分,不涉及销售信息。如果需要记录销售信息,可以在存储过程中添加相应的 INSERT 语句。
商品(编号,品名,进价,库存,售价,厂商编号) 顾客(卡号,姓名,电话,积分) 厂商(编号,厂址,名称、电话) 销售(顾客卡号,商品编号,数量,日期) 根据上面基本表的信息完成下列查询。 1 查询积分100以上的顾客买的商品名称和价格 2 查询比“伊利乳品”所有产品都贵的商品价格 3 查询库存不足100的商品名称和厂商名称及电话
1. 查询积分100以上的顾客买的商品名称和价格:
```
SELECT 商品.品名, 商品.售价
FROM 商品
INNER JOIN 销售 ON 商品.编号 = 销售.商品编号
INNER JOIN 顾客 ON 销售.顾客卡号 = 顾客.卡号
WHERE 顾客.积分 >= 100;
```
2. 查询比“伊利乳品”所有产品都贵的商品价格:
```
SELECT MAX(商品.售价)
FROM 商品
WHERE 商品.品名 <> '伊利乳品';
```
然后可以使用这个价格作为一个子查询,查询所有售价高于该价格的商品:
```
SELECT *
FROM 商品
WHERE 商品.售价 > (
SELECT MAX(商品.售价)
FROM 商品
WHERE 商品.品名 <> '伊利乳品'
);
```
3. 查询库存不足100的商品名称和厂商名称及电话:
```
SELECT 商品.品名, 厂商.名称, 厂商.电话
FROM 商品
INNER JOIN 厂商 ON 商品.厂商编号 = 厂商.编号
WHERE 商品.库存 < 100;
```
阅读全文