2012-10-31 23 views
0

/*顯示成員*/我想說明其中的成員已過期的成員,我使用兩個表的聯接,其中會員已經過期日期

select m.FirstName, m.LastName, m.SocialSecurityNumber, m.Mobile, m.Email 
from Members as m 
Join Memberships as ms on ms.MemberId = m.Id 
where ms.ToDate < '2012-10-31' 

成員可以有一個以上的會員資格但只有一個活躍會員 這個聲明讓我有很多用戶,如果用戶有4個成員,3個已經過期,它會顯示3次。如果他沒有任何有效的會員資格,我只希望會員加入一次。

我希望你明白我在這裏要做的事情。

+0

你有會員狀態字段可以過濾通過? – travega

+0

您是否只希望沒有活躍會員的會員或所有會員過期的會員? – Chad

回答

0

如果你需要得到最後的成員TODATE,那麼最好的辦法將是做水木清華這樣的:

select 
    m.FirstName, m.LastName, 
    m.SocialSecurityNumber, m.Mobile, m.Email, 
    ms.ToDate 
from Members as m 
    left outer join (
     select t.memberId, max(t.ToDate) as ToDate 
     from Memberships as t 
     group by t.MemberId 
    ) as ms on ms.MemberId = m.Id 
where ms.ToDate < '2012-10-31' or ms.ToDate is null 
0

最簡單的方法是獲取Members表中所有不在MemberIDMemberships與當前訂閱的列表中的所有人。不需要連接,所以你不會有重複。

SELECT m.FirstName, m.LastName, m.SocialSecurityNumber, m.Mobile, m.Email 
FROM Members AS m 
WHERE m.ID NOT IN ( 
    SELECT ms.MemberID 
    FROM Memberships ms 
    WHERE ms.ToDate >= '2012-10-31') 
相關問題