3.17 查询至少有3本在借图书的读者编号、姓名以及在借图书的图书编号、图书名称,按读者编号升序、借阅日期降序排序输出。 3.18 查询所借阅的图书(包括已归还的图书)总价最高的读者编号、姓名和借书总价。
时间: 2024-10-28 09:09:20 浏览: 37
3.17 的查询需求是找出那些至少借了三本书并且借阅状态仍然有效的读者信息。这通常涉及到联接多个表,例如"读者"表、"借阅记录"表和"图书"表,通过筛选出读者ID对应借阅记录的数量大于等于3,然后按照读者编号升序(最小先显示)、借阅日期的倒序(最新借阅先显示)排列。具体SQL语句可能类似这样:
```sql
SELECT r.reader_id, r.name, t.book_id, t.title
FROM readers r
JOIN borrow_records br ON r.reader_id = br.reader_id
JOIN books t ON br.book_id = t.book_id
WHERE br.return_date IS NULL AND br.times_borrowed >= 3
ORDER BY r.reader_id ASC, br.borrow_date DESC;
```
3.18 的查询则相反,目标是找出借阅总费用最高的读者,包括已归还的图书。同样需要关联三个表,但是这次需要计算每条借阅记录的金额并求和,再找出最高者。SQL语句可能如下所示:
```sql
SELECT r.reader_id, r.name, SUM(br.borrow_fee) AS total_fee
FROM readers r
JOIN borrow_records br ON r.reader_id = br.reader_id
GROUP BY r.reader_id
ORDER BY total_fee DESC
LIMIT 1;
```
这里假设`borrow_fee`字段表示单次借阅的价格。如果书籍价格在其他表中有存储,那么需要相应地调整查询。
阅读全文