2014-04-22 47 views
0

的前半部分你好我有一個關於我想創建的查詢的問題。我想創建一個查詢列表成員的名稱誰曾經檢查過一個更多的書,並已返回所有人。我有一個查詢(如下圖所示,如果返回日期不是NULL,但是我不知道如何現在顯示名稱,如果他們有返回的書,但仍然有另一本書沒有返回(返回日期= NULL)。下面是我的腳本,如果任何人都可以給我一些建議,謝謝。SQL查詢,我只能得到

SELECT MemName 
FROM MEMBER, CHECK_OUT 
WHERE MEMBER.ID = CHECK_OUT.MemID 
AND CHECK_OUT.DateRet IS NOT NULL 
+0

我想你會想要做一個加入[見這是一個很好的教程吧](http://blog.codinghorror.com/a-visual-explanation-of-sql-joins /) – ProfessionalAmateur

回答

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。

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