我有三张桌子:
People (PeopleID, Name, DOB, Gender etc...)
Events (EventID, EventTitle)
EventAllocations (AllocationID, PeopleID, EventID)
每个表的ID用作主键,在EventAllocations中,PeopleID和EventID是外键。
基本上,我想随机分配人员参加特定活动(根据陪审团选择或随机门票奖励)。
我想创建一个查询:
我通过使用两个单独的查询设法达到了预期的效果。
查询一个:
INSERT INTO EventAllocations (PeopleID)
SELECT TOP 20 People.[People ID]
FROM People
ORDER BY Rnd(People.[People ID]);
查询二:
UPDATE EventAllocations SET EventAllocations.EventID = 250
WHERE (((EventAllocations.EventID) Is Null));
注意我正在使用Access 2007。
这一切似乎都非常低效 - 是否有更好的方法来解决这个问题?理想情况下,我希望一个查询同时执行这两个任务。
答案 0 :(得分:0)
INSERT INTO EventAllocations (peopleid, eventid)
SELECT TOP 20 peopleid, x.eventid
FROM People p
inner join (select top 1 eventid
from events
order by eventid desc) x on 1=1
ORDER BY NEWID(); --Replace NEWID() with your rnd order