2016-01-19 39 views
0

創建於各行的行我有一個用戶表和成員表。用戶可以有許多會員資格,每年有償或無償回收。我想爲會員中的每位用戶創建一個新行,作爲免費會員。目前如何從其他表

成員是空的,所以我必須爲每一行自動創建新的ID。

會員佈局爲:

[Id] 
[StartDateTime] 
[EndDateTime] 
[Frozen] 
[MembershipType] 
[PaidDateTime] 

和用戶是

[Id] 
    ,[AspUserId] 
    ,[Title] 
    ,[Forename] 
    ,[Surname] 
    ,[Email] 
    ,[Dob] 
    ,[DateCreated] 
    ,[AddressId] 
    ,[PhoneNumber] 
    ,[Gender] 
    ,[Nationality] 
    ,[WMSFPlayerId] 
    ,[ProfileImageURL] 
    ,[FavouriteGame] 
    ,[Bio] 
    ,[Username] 
    ,[LastLogin] 
    ,[WMSFPlayerId_Confirmed] 
    ,[MembershipId] 

中的成員:

  • ID將是一個新的ID

  • 的startDateTime會今天

  • 結束日期時間將從現在每年

  • 冰凍將是0

  • MembershipType將0

  • PaidDateTime將爲空

如何我可以在會員表中爲我在用戶中擁有的每個用戶插入免費會員資格嗎?我還必須使用爲他們創建的新的MembershipID更新Users表。

+0

你的問題是什麼? –

+0

@TabAlleman更新! – Powellellogram

+0

請谷歌並瞭解SQL中的INSERT..SELECT命令。 –

回答

2

首先,我想指出你的表定義將不支持每個用戶擁有多個成員關係的要求。你現在擁有的是每個成員的多個用戶。用戶表不應該有MembershipID字段。它應該從User表中刪除和UserID場應該被添加到Membership表。一旦這樣做了類似的東西,

INSERT INTO Membership (Id, StartDateTime, EndDateTime, Frozen, MembershipType) 
SELECT Id, GETDATE(), GETDATE(), 0, 'Free' FROM User 

顯然,您需要更改根據您的要求的值。

1

你會使用insert . . . select。類似這樣的:

insert into memberships(id, StartDate, EndDate, Frozen, MembershipType, PaidDateTime) 
    select u.aspuserid, getdate(), dateadd(year, 1, getdate()), 0, 0, null 
    from users u; 
+1

試圖將用戶標識插入StartDate列可能會導致錯誤。 –