您好我有一个关于我正在尝试创建的查询的问题。我想创建一个查询,列出成员的名字,以便谁签出了一本书并返回了所有书籍。我有一个查询(如下所示,如果返回日期不是NULL,则查找条目但我无法弄清楚如果他们有一个已退回的书,但仍然有另一本书没有返回,现在如何显示名称(返回日期=如果有人可以给我一些建议,下面是我的脚本。谢谢。
SELECT MemName
FROM MEMBER, CHECK_OUT
WHERE MEMBER.ID = CHECK_OUT.MemID
AND CHECK_OUT.DateRet IS NOT NULL
答案 0 :(得分:1)
如果我理解了您的要求,您想要一个能够返回当前已签出图书的所有成员的查询,是否正确?
这样的事情可能就是你想要的:
SELECT
M.MemName
FROM
MEMBER AS M
INNER JOIN CHECK_OUT AS C ON (C.MemID = M.ID)
WHERE
C.DateRet IS NULL
这将列出已签出某些内容的所有成员名称,但不会删除重复项。要仅列出每个名称一个,请使用SELECT DISTINT
。要获取没有任何签出的名称(但在某一点上做过),请使用您的查询或修改我的C.DateRet IS NOT NULL
。我个人喜欢在这种情况下使用INNER JOINS。
答案 1 :(得分:0)
我想创建一个查询,列出成员的名字,以查看曾经签出过一本或多本书并返回所有书籍的人。
SELECT MEMBER.MemName
FROM MEMBER, CHECK_OUT
WHERE MEMBER.ID = CHECK_OUT.MemID
group by MEMBER.ID, MEMBER.MemName
having max(nvl2(CHECK_OUT.DateRet, 0, 1)) = 0