学生(学号,年龄,性别,系名) 教材(编号,书名,出版社编号,价格) 订购(学号,书号,数量) 出版社(编号,名称,地址) 根据上面基本表的信息完成下列查询。 1统计每位学生订数数量 2 统计每位学生应缴书费。 3 统计订购3册以上的教材信息。 4 统计没有人定的教材信息。
时间: 2024-05-04 22:21:07 浏览: 207
1. 统计每位学生订数数量:
```
SELECT 学生.学号, COUNT(*) AS 订购数量
FROM 学生, 订购
WHERE 学生.学号 = 订购.学号
GROUP BY 学生.学号;
```
2. 统计每位学生应缴书费:
```
SELECT 学生.学号, SUM(订购.数量 * 教材.价格) AS 应缴书费
FROM 学生, 订购, 教材
WHERE 学生.学号 = 订购.学号 AND 订购.书号 = 教材.编号
GROUP BY 学生.学号;
```
3. 统计订购3册以上的教材信息:
```
SELECT 教材.书名, SUM(订购.数量) AS 订购数量
FROM 教材, 订购
WHERE 教材.编号 = 订购.书号
GROUP BY 教材.书名
HAVING SUM(订购.数量) >= 3;
```
4. 统计没有人定的教材信息:
```
SELECT 教材.编号, 教材.书名
FROM 教材
WHERE 教材.编号 NOT IN (SELECT DISTINCT 书号 FROM 订购);
```
相关问题
学生(学号,年龄,性别,系名) 教材(编号,书名,出版社编号,价格) 订购(学号,书号,数量) 出版社(编号,名称,地址)liebiao
学生表:
| 学号 | 年龄 | 性别 | 系名 |
| ---- | ---- | ---- | ---- |
| 001 | 20 | 男 | 计算机科学 |
| 002 | 19 | 女 | 信息工程 |
| 003 | 21 | 男 | 电子工程 |
| 004 | 20 | 女 | 机械工程 |
教材表:
| 编号 | 书名 | 出版社编号 | 价格 |
| ---- | ---- | ---- | ---- |
| 001 | 《计算机网络》 | 001 | 45.00 |
| 002 | 《数据结构》 | 002 | 38.50 |
| 003 | 《操作系统》 | 001 | 48.00 |
| 004 | 《机器学习》 | 003 | 68.80 |
订购表:
| 学号 | 书号 | 数量 |
| ---- | ---- | ---- |
| 001 | 001 | 2 |
| 002 | 003 | 1 |
| 003 | 002 | 3 |
| 004 | 004 | 2 |
出版社表:
| 编号 | 名称 | 地址 |
| ---- | ---- | ---- |
| 001 | 人民邮电出版社 | 北京市海淀区 |
| 002 | 清华大学出版社 | 北京市海淀区 |
| 003 | 机械工业出版社 | 北京市丰台区 |
学生(学号,年龄,性别,系名) 教材(编号,书名,出版社编号,价格)订购(学号,书号.数量)出版社(编号,名称,地址) 建立学生的insert触发器,若向学生表中插入一条记录,则自动向订购表中插入一行,令该学生订购被订购数量最多的教材。
好的,您的问题是如何建立学生表的insert触发器,实现向订购表中插入一行,记录该学生订购数量最多的教材。
以下是实现该功能所需的SQL代码:
首先,我们需要创建订购表:
```sql
CREATE TABLE 订购 (
学号 VARCHAR(10),
书号 VARCHAR(10),
数量 INT,
PRIMARY KEY (学号, 书号)
);
```
然后,我们需要创建一个触发器,在学生表中插入新记录时,自动向订购表中插入一行,记录该学生订购数量最多的教材。
```sql
CREATE TRIGGER insert_order_trigger
AFTER INSERT ON 学生
FOR EACH ROW
BEGIN
-- 查询该学生订购数量最多的教材
SELECT 教材.编号 INTO @book_id
FROM 教材
JOIN 订购 ON 订购.书号 = 教材.编号
WHERE 订购.学号 = NEW.学号
GROUP BY 教材.编号
ORDER BY SUM(订购.数量) DESC
LIMIT 1;
-- 插入一行到订购表中
INSERT INTO 订购 (学号, 书号, 数量) VALUES (NEW.学号, @book_id, 1);
END;
```
触发器的作用是在学生表中插入新记录时触发,查询该学生订购数量最多的教材,然后插入一行到订购表中,记录该学生订购数量最多的教材。
注意:以上代码仅供参考,具体实现可能需要根据实际情况进行调整。同时,该触发器可能会对数据库性能产生一定影响,建议在实际应用中进行充分测试和优化。
阅读全文