我有一个数据库项目,我正在努力解决三个问题。你能帮忙吗?
我有以下表格:
member(memberNo, name, age)
book(isbn, title, author, publisher, year, category)
borrowed(memberNo, isbn, date)
我必须通过制定单个SQL查询(即不使用视图)来回答以下每个问题:
1)对于每个类别,找到在该类别中借阅超过五本书的成员的姓名。
2)找到图书馆中最多产的作家,即撰写了最多书籍的作者。
3)找到多次借用同一本书的会员的姓名。
非常感谢
到目前为止,我尝试了以下内容:
1)我的查询:
SELECT member.name
FROM member
WHERE member.memberNo IN(SELECT borrowed.memberNo
FROM borrowed
GROUP
BY memberNo
HAVING COUNT(memberNo)>5)
结果: 这似乎返回了正确的结果,但我还没有想出如何根据问题添加“类别”。
2)我的查询:
SELECT author
, COUNT(*) AS 'Books Written'
FROM book
GROUP
BY author
HAVING COUNT(isbn)>6
结果: 这会返回正确的结果,但仅仅因为我指定了6个以上 - 这是因为我知道我有一个写过7本书的作者,因此我指的是'超过6' - 但我不知道如何写一个查询,确定自己编写的“大多数书籍”
3)我的查询:
SELECT member.name
FROM member
WHERE member.memberNo IN (SELECT borrowed.memberNo
FROM borrowed
WHERE borrowed.isbn IN(
SELECT COUNT(borrowed.isbn) as 'con'
FROM borrowed
WHERE 'con' >1))
结果: 查询返回一些带有成员名称的行,但它们不正确 - 一些成员只是借了多本书(但不是同一本书不止一次),但其他成员没有多次借过任何书籍 - 所以查询不正确。
答案 0 :(得分:0)
这是1 ....的线索。
SELECT b.something
, c.something_else
FROM a
JOIN b
ON b.x = a.x
JOIN c
ON c.y = a.y
GROUP
BY b.m
, c.n
HAVING COUNT(*) >= 5;